diff options
Diffstat (limited to 'src/corelib/tools/qlocale.cpp')
-rw-r--r-- | src/corelib/tools/qlocale.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp index e70630eb12..3997652437 100644 --- a/src/corelib/tools/qlocale.cpp +++ b/src/corelib/tools/qlocale.cpp @@ -3646,6 +3646,11 @@ qlonglong QLocaleData::bytearrayToLongLong(const char *num, int base, bool *ok) } if (*endptr != '\0') { + while (ascii_isspace(*endptr)) + ++endptr; + } + + if (*endptr != '\0') { // we stopped at a non-digit character after converting some digits if (ok != 0) *ok = false; @@ -3663,12 +3668,23 @@ qulonglong QLocaleData::bytearrayToUnsLongLong(const char *num, int base, bool * const char *endptr; qulonglong l = qstrtoull(num, &endptr, base, &_ok); - if (!_ok || *endptr != '\0') { + if (!_ok) { if (ok != 0) *ok = false; return 0; } + if (*endptr != '\0') { + while (ascii_isspace(*endptr)) + ++endptr; + } + + if (*endptr != '\0') { + if (ok != nullptr) + *ok = false; + return 0; + } + if (ok != 0) *ok = true; return l; |