From de7f281d7ad1bc8e3dc5a549436a8cb3ba159e7f Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Wed, 24 Aug 2016 11:55:35 +0200 Subject: [PATCH] QLocale: Fix wrong assert The endptr from reading the exponent of a 'g' form snprintf result should not be past the end of the string we're reading from. It has nothing to do with the 'e' sign. Task-number: QTBUG-54482 Change-Id: I8bdee917b8d21fdc94c255548ad7e008431a07fa Reviewed-by: Simon Hausmann --- src/corelib/tools/qlocale_tools.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/tools/qlocale_tools.cpp b/src/corelib/tools/qlocale_tools.cpp index 5fd2aa0c597..762f4f36dcd 100644 --- a/src/corelib/tools/qlocale_tools.cpp +++ b/src/corelib/tools/qlocale_tools.cpp @@ -224,7 +224,7 @@ void doubleToAscii(double d, QLocaleData::DoubleForm form, int precision, char * const char *endptr; decpt = qstrtoll(target.data() + eSign + 1, &endptr, 10, &ok) + 1; Q_ASSERT(ok); - Q_ASSERT(endptr - target.data() <= length - eSign -1); + Q_ASSERT(endptr - target.data() <= length); } else { // No 'e' found, so it's the 'f' form. Variants of snprintf generate numbers with // potentially multiple digits before the '.', but without decimal exponent then. So we