From 139fd9bd0d0bd2372d7616bbf533f70c18667ecc Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 4 Nov 2015 12:38:59 +0100 Subject: QString::vasprintf: Extract Method parse_flag_characters ... and simplify the method afterwards: Drop the boolean that was used to control program flow when the code was still part of vasprintf(), by taking advantage of the fact that we can now just return from the function to break out of both the switch and the loop. Change-Id: I97f050b63c0c309aaed3cb0fe979d53c8d970003 Reviewed-by: Oswald Buddenhagen --- src/corelib/tools/qstring.cpp | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index d1b5327f5c..d36aef8620 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -5866,6 +5866,23 @@ QString &QString::vsprintf(const char *cformat, va_list ap) return *this = vasprintf(cformat, ap); } +static uint parse_flag_characters(const char * &c) Q_DECL_NOTHROW +{ + uint flags = 0; + while (true) { + switch (*c) { + case '#': flags |= QLocaleData::Alternate; break; + case '0': flags |= QLocaleData::ZeroPadded; break; + case '-': flags |= QLocaleData::LeftAdjusted; break; + case ' ': flags |= QLocaleData::BlankBeforePositive; break; + case '+': flags |= QLocaleData::AlwaysShowSign; break; + case '\'': flags |= QLocaleData::ThousandsGroup; break; + default: return flags; + } + ++c; + } +} + /*! \fn QString::vasprintf(const char *cformat, va_list ap) \since 5.5 @@ -5915,23 +5932,7 @@ QString QString::vasprintf(const char *cformat, va_list ap) continue; } - // Parse flag characters - uint flags = 0; - bool no_more_flags = false; - do { - switch (*c) { - case '#': flags |= QLocaleData::Alternate; break; - case '0': flags |= QLocaleData::ZeroPadded; break; - case '-': flags |= QLocaleData::LeftAdjusted; break; - case ' ': flags |= QLocaleData::BlankBeforePositive; break; - case '+': flags |= QLocaleData::AlwaysShowSign; break; - case '\'': flags |= QLocaleData::ThousandsGroup; break; - default: no_more_flags = true; break; - } - - if (!no_more_flags) - ++c; - } while (!no_more_flags); + uint flags = parse_flag_characters(c); if (*c == '\0') { result.append(QLatin1String(escape_start)); // incomplete escape, treat as non-escape text -- cgit v1.2.3