forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -112,7 +112,7 @@ void GdbMi::parseResultOrValue(DebuggerOutputParser &parser)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reads one \ooo entity.
|
// Reads one \ooo entity.
|
||||||
static bool parseOctalEscapedHelper(DebuggerOutputParser &parser, QByteArray &buffer)
|
static bool parseOctalEscapedHelper(DebuggerOutputParser &parser, QString &buffer)
|
||||||
{
|
{
|
||||||
if (parser.remainingChars() < 4)
|
if (parser.remainingChars() < 4)
|
||||||
return false;
|
return false;
|
||||||
@@ -130,7 +130,7 @@ static bool parseOctalEscapedHelper(DebuggerOutputParser &parser, QByteArray &bu
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool parseHexEscapedHelper(DebuggerOutputParser &parser, QByteArray &buffer)
|
static bool parseHexEscapedHelper(DebuggerOutputParser &parser, QString &buffer)
|
||||||
{
|
{
|
||||||
if (parser.remainingChars() < 4)
|
if (parser.remainingChars() < 4)
|
||||||
return false;
|
return false;
|
||||||
@@ -178,15 +178,16 @@ static void parseSimpleEscape(DebuggerOutputParser &parser, QString &result)
|
|||||||
// *or* one escaped char, *or* one unescaped char.
|
// *or* one escaped char, *or* one unescaped char.
|
||||||
static void parseCharOrEscape(DebuggerOutputParser &parser, QString &result)
|
static void parseCharOrEscape(DebuggerOutputParser &parser, QString &result)
|
||||||
{
|
{
|
||||||
QByteArray buffer;
|
const int oldSize = result.size();
|
||||||
while (parseOctalEscapedHelper(parser, buffer))
|
while (parseOctalEscapedHelper(parser, result))
|
||||||
;
|
;
|
||||||
while (parseHexEscapedHelper(parser, buffer))
|
while (parseHexEscapedHelper(parser, result))
|
||||||
;
|
;
|
||||||
|
|
||||||
if (!buffer.isEmpty()) {
|
if (result.size() != oldSize)
|
||||||
result.append(QString::fromUtf8(buffer));
|
return;
|
||||||
} else if (parser.isCurrent('\\')) {
|
|
||||||
|
if (parser.isCurrent('\\')) {
|
||||||
parser.advance();
|
parser.advance();
|
||||||
parseSimpleEscape(parser, result);
|
parseSimpleEscape(parser, result);
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user