make split_value_list() even less sane again

contrary to what one may expect, it's actually *not* supposed to remove
the meta-characters it interprets.

luckily, this function is not used much any more ...

Task-number: QTBUG-31877
Change-Id: I2b60f9b173140da78db2b07b596cc2e5f6e6d555
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
This commit is contained in:
Oswald Buddenhagen 2013-07-03 13:54:17 +02:00 committed by The Qt Project
parent bc328f8ec3
commit 783181cfc1
3 changed files with 11 additions and 5 deletions

View File

@ -276,6 +276,8 @@ ProStringList QMakeEvaluator::split_value_list(const QString &vals, const ProFil
ushort unicode = vals_data[x].unicode();
if (unicode == quote) {
quote = 0;
hadWord = true;
build += QChar(unicode);
continue;
}
switch (unicode) {
@ -283,7 +285,7 @@ ProStringList QMakeEvaluator::split_value_list(const QString &vals, const ProFil
case '\'':
quote = unicode;
hadWord = true;
continue;
break;
case ' ':
case '\t':
if (!quote) {
@ -294,22 +296,23 @@ ProStringList QMakeEvaluator::split_value_list(const QString &vals, const ProFil
}
continue;
}
build += QChar(unicode);
break;
case '\\':
if (x + 1 != vals_len) {
ushort next = vals_data[++x].unicode();
if (next == '\'' || next == '"' || next == '\\')
if (next == '\'' || next == '"' || next == '\\') {
build += QChar(unicode);
unicode = next;
else
} else {
--x;
}
}
// fallthrough
default:
hadWord = true;
build += QChar(unicode);
break;
}
build += QChar(unicode);
}
if (hadWord)
ret << ProString(build).setSource(source);

View File

@ -171,3 +171,5 @@ else: \
testReplace($$shell_quote($$in), $$out, "shell_quote")
testReplace($$reverse($$list(one two three)), three two one, "reverse")
testReplace($$cat(textfile), hi '"holla he"' 'hu!')

View File

@ -0,0 +1 @@
hi "holla he" hu!