From 4ba80c37c068dd1839101c6c1f8ceed49f696d5f Mon Sep 17 00:00:00 2001 From: Donald Lam Date: Sun, 11 Apr 2021 11:06:44 -0700 Subject: Fix amount tokenizer re: embedded minus sign. An amount may have a (single) leading minus sign, but none after that. Bug #2001 (and #1809). --- src/amount.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/amount.cc') diff --git a/src/amount.cc b/src/amount.cc index 788a140c..6baa903c 100644 --- a/src/amount.cc +++ b/src/amount.cc @@ -975,8 +975,15 @@ namespace { { char buf[256]; char c = peek_next_nonws(in); - READ_INTO(in, buf, 255, c, - std::isdigit(c) || c == '-' || c == '.' || c == ','); + int max = 255; + char *p = buf; + if (c == '-') { + *p++ = c; + max--; + in.get(c); + } + READ_INTO(in, p, max, c, + std::isdigit(c) || c == '.' || c == ','); string::size_type len = std::strlen(buf); while (len > 0 && ! std::isdigit(buf[len - 1])) { -- cgit v1.2.3