aboutsummaryrefslogtreecommitdiffstats
path: root/src
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-03-14 15:30:44 +0000
commitf7669c82ff3d1dc36596cca94f0a24538c0ec305 (patch)
treee5c83e8863b93e16237a60e9082aaebccbd57789 /src
parent21b8eb121c1ef1721612c21388f802fb8b7da9e3 (diff)
qmake: abort when $$prompt() gets EOF
sync-up with qmake; no effect on creator. Change-Id: I51ca7df8d694c6ffe9d9899cba414b1b46f5ce95 (cherry picked from qtbase/80e63223f80643a93255cde9e0a4e82c705b2262) Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/shared/proparser/qmakebuiltins.cpp13
-rw-r--r--src/shared/proparser/qmakeevaluator.cpp3
-rw-r--r--src/shared/proparser/qmakeevaluator.h2
3 files changed, 10 insertions, 8 deletions
diff --git a/src/shared/proparser/qmakebuiltins.cpp b/src/shared/proparser/qmakebuiltins.cpp
index 393b946bbb..91bd6c251f 100644
--- a/src/shared/proparser/qmakebuiltins.cpp
+++ b/src/shared/proparser/qmakebuiltins.cpp
@@ -555,11 +555,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) {
@@ -1108,6 +1106,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));
}
}
@@ -1277,7 +1280,7 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand(
break;
}
- return ret;
+ return ReturnTrue;
}
QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional(
diff --git a/src/shared/proparser/qmakeevaluator.cpp b/src/shared/proparser/qmakeevaluator.cpp
index 702ec650c4..bec43b1d4e 100644
--- a/src/shared/proparser/qmakeevaluator.cpp
+++ b/src/shared/proparser/qmakeevaluator.cpp
@@ -1773,8 +1773,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateExpandFunction(
ProStringList args;
if (expandVariableReferences(tokPtr, 5, &args, true) == ReturnError)
return ReturnError;
- *ret = evaluateBuiltinExpand(func_t, func, args);
- return ReturnTrue;
+ return evaluateBuiltinExpand(func_t, func, args, *ret);
}
QHash<ProKey, ProFunctionDef>::ConstIterator it =
diff --git a/src/shared/proparser/qmakeevaluator.h b/src/shared/proparser/qmakeevaluator.h
index d1e734346b..3816769792 100644
--- a/src/shared/proparser/qmakeevaluator.h
+++ b/src/shared/proparser/qmakeevaluator.h
@@ -209,7 +209,7 @@ public:
VisitReturn evaluateExpandFunction(const ProKey &function, const ushort *&tokPtr, ProStringList *ret);
VisitReturn evaluateConditionalFunction(const ProKey &function, const ushort *&tokPtr);
- ProStringList evaluateBuiltinExpand(int func_t, const ProKey &function, const ProStringList &args);
+ VisitReturn evaluateBuiltinExpand(int func_t, const ProKey &function, const ProStringList &args, ProStringList &ret);
VisitReturn evaluateBuiltinConditional(int func_t, const ProKey &function, const ProStringList &args);
VisitReturn evaluateConditional(const QStringRef &cond, const QString &where, int line = -1);