diff options
| author | hjk <hjk@qt.io> | 2022-11-08 16:57:14 +0100 |
|---|---|---|
| committer | hjk <hjk@qt.io> | 2022-11-09 10:54:30 +0000 |
| commit | 19ef8e5c7a5348e4b47feed09cefcc2b4651be32 (patch) | |
| tree | ee55cee839ee439fc4a2b44c051194065615c739 /src/plugins/debugger/debuggerprotocol.cpp | |
| parent | 06838e3e5e41f1f090fdd016c736bb91241cd5b3 (diff) | |
| download | qt-creator-19ef8e5c7a5348e4b47feed09cefcc2b4651be32.tar.gz | |
Debugger: Avoid some temporary containers when parsing escaped chars
Change-Id: Ia9af6801de6f745388e464fc806297d396c66160
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/debugger/debuggerprotocol.cpp')
| -rw-r--r-- | src/plugins/debugger/debuggerprotocol.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/plugins/debugger/debuggerprotocol.cpp b/src/plugins/debugger/debuggerprotocol.cpp index 0bf60c3a4f..9aebe53f34 100644 --- a/src/plugins/debugger/debuggerprotocol.cpp +++ b/src/plugins/debugger/debuggerprotocol.cpp @@ -112,7 +112,7 @@ void GdbMi::parseResultOrValue(DebuggerOutputParser &parser) } // Reads one \ooo entity. -static bool parseOctalEscapedHelper(DebuggerOutputParser &parser, QByteArray &buffer) +static bool parseOctalEscapedHelper(DebuggerOutputParser &parser, QString &buffer) { if (parser.remainingChars() < 4) return false; @@ -130,7 +130,7 @@ static bool parseOctalEscapedHelper(DebuggerOutputParser &parser, QByteArray &bu return true; } -static bool parseHexEscapedHelper(DebuggerOutputParser &parser, QByteArray &buffer) +static bool parseHexEscapedHelper(DebuggerOutputParser &parser, QString &buffer) { if (parser.remainingChars() < 4) return false; @@ -178,15 +178,16 @@ static void parseSimpleEscape(DebuggerOutputParser &parser, QString &result) // *or* one escaped char, *or* one unescaped char. static void parseCharOrEscape(DebuggerOutputParser &parser, QString &result) { - QByteArray buffer; - while (parseOctalEscapedHelper(parser, buffer)) + const int oldSize = result.size(); + while (parseOctalEscapedHelper(parser, result)) ; - while (parseHexEscapedHelper(parser, buffer)) + while (parseHexEscapedHelper(parser, result)) ; - if (!buffer.isEmpty()) { - result.append(QString::fromUtf8(buffer)); - } else if (parser.isCurrent('\\')) { + if (result.size() != oldSize) + return; + + if (parser.isCurrent('\\')) { parser.advance(); parseSimpleEscape(parser, result); } else { |
