summaryrefslogtreecommitdiffstats
path: root/src/linguist/shared/qmakebuiltins.cpp
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2016-11-25 20:41:20 +0100
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2018-09-14 13:48:56 +0000
commit3a80043390cc30390c1b79bc0fd782150218482f (patch)
tree43d9cd82e05e61b8ff251c3f966741d77ec4e11c /src/linguist/shared/qmakebuiltins.cpp
parent8054ae3a0da372681901e07e5eeef69e002d8cf0 (diff)
make qmake abort when $$prompt() gets EOF
otherwise, infinite loops can result, as amply demonstrated by the new configure (which duly replicated the old configures' behavior ...). QMakeEvaluator::evaluateBuiltinExpand() now returns a VisitReturn like all other evaluate*() functions. the string list return value is now an out parameter; i used a reference instead of a pointer to avoid adjusting 56 usages of it. Task-number: QTBUG-13964 Change-Id: I51ca7df8d694c6ffe9d9899cba414b1b46f5ce95 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from qtbase/80e63223f80643a93255cde9e0a4e82c705b2262) Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/linguist/shared/qmakebuiltins.cpp')
-rw-r--r--src/linguist/shared/qmakebuiltins.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/linguist/shared/qmakebuiltins.cpp b/src/linguist/shared/qmakebuiltins.cpp
index 2eec2ab90..5c7ab48c2 100644
--- a/src/linguist/shared/qmakebuiltins.cpp
+++ b/src/linguist/shared/qmakebuiltins.cpp
@@ -564,11 +564,9 @@ void QMakeEvaluator::populateDeps(
}
}
-ProStringList QMakeEvaluator::evaluateBuiltinExpand(
- int func_t, const ProKey &func, const ProStringList &args)
+QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinExpand(
+ int func_t, const ProKey &func, const ProStringList &args, ProStringList &ret)
{
- ProStringList ret;
-
traceMsg("calling built-in $$%s(%s)", dbgKey(func), dbgSepStrList(args));
switch (func_t) {
@@ -1114,6 +1112,11 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand(
if (qfile.open(stdin, QIODevice::ReadOnly)) {
QTextStream t(&qfile);
const QString &line = t.readLine();
+ if (t.atEnd()) {
+ fputs("\n", stderr);
+ evalError(fL1S("Unexpected EOF."));
+ return ReturnError;
+ }
ret = split_value_list(QStringRef(&line));
}
}
@@ -1283,7 +1286,7 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand(
break;
}
- return ret;
+ return ReturnTrue;
}
QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional(