forked from qt-creator/qt-creator
Revert "Debugger: Avoid some temporary containers when parsing escaped chars"
This reverts commit 19ef8e5c7a
which
introduced the following regression:
FAIL! : tst_protocol::parseCString(octal) Compared values are not the same
Actual (parsed) : "abc\u00C3\u00A4\u00C3\u00A9def\u00C3\u00B1"
Expected (expected): "abc\u00E4\u00E9def\u00F1"
Loc: [/data/dev/creator-out/tests/auto/debugger/tst_protocol.cpp(32)]
FAIL! : tst_protocol::parseCString(hex) Compared values are not the same
Actual (parsed) : "abc\u00C3\u00A4\u00C3\u00A9def\u00C3\u00B1"
Expected (expected): "abc\u00E4\u00E9def\u00F1"
Loc: [/data/dev/creator-out/tests/auto/debugger/tst_protocol.cpp(32)]
Change-Id: I59509fd61a54c335ab0a34f8ca0dffb3d75da696
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -112,7 +112,7 @@ void GdbMi::parseResultOrValue(DebuggerOutputParser &parser)
|
||||
}
|
||||
|
||||
// Reads one \ooo entity.
|
||||
static bool parseOctalEscapedHelper(DebuggerOutputParser &parser, QString &buffer)
|
||||
static bool parseOctalEscapedHelper(DebuggerOutputParser &parser, QByteArray &buffer)
|
||||
{
|
||||
if (parser.remainingChars() < 4)
|
||||
return false;
|
||||
@@ -130,7 +130,7 @@ static bool parseOctalEscapedHelper(DebuggerOutputParser &parser, QString &buffe
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool parseHexEscapedHelper(DebuggerOutputParser &parser, QString &buffer)
|
||||
static bool parseHexEscapedHelper(DebuggerOutputParser &parser, QByteArray &buffer)
|
||||
{
|
||||
if (parser.remainingChars() < 4)
|
||||
return false;
|
||||
@@ -178,16 +178,15 @@ static void parseSimpleEscape(DebuggerOutputParser &parser, QString &result)
|
||||
// *or* one escaped char, *or* one unescaped char.
|
||||
static void parseCharOrEscape(DebuggerOutputParser &parser, QString &result)
|
||||
{
|
||||
const int oldSize = result.size();
|
||||
while (parseOctalEscapedHelper(parser, result))
|
||||
QByteArray buffer;
|
||||
while (parseOctalEscapedHelper(parser, buffer))
|
||||
;
|
||||
while (parseHexEscapedHelper(parser, result))
|
||||
while (parseHexEscapedHelper(parser, buffer))
|
||||
;
|
||||
|
||||
if (result.size() != oldSize)
|
||||
return;
|
||||
|
||||
if (parser.isCurrent('\\')) {
|
||||
if (!buffer.isEmpty()) {
|
||||
result.append(QString::fromUtf8(buffer));
|
||||
} else if (parser.isCurrent('\\')) {
|
||||
parser.advance();
|
||||
parseSimpleEscape(parser, result);
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user