summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2017-05-19 15:50:11 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2017-06-01 12:05:01 +0000
commit27c4c643bae356d5bbdb58e44ec4b7932f277886 (patch)
tree79538b7e14c42c8f451e4435ea7722a3a12081b7
parentc949dfa143c9d3b9a43f643058b8dc35c2de89fb (diff)
Fix a crash when log tag doesn't contain the expr attribute
Don't try to evaluate to string NoEvaluator is for log. Task-number: QTBUG-59568 Change-Id: Id2faa7f8b94aa18e8611aafcaa9f27217f5a4a9c Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
-rw-r--r--src/scxml/qscxmlexecutablecontent.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/scxml/qscxmlexecutablecontent.cpp b/src/scxml/qscxmlexecutablecontent.cpp
index 682ea47..2401aa6 100644
--- a/src/scxml/qscxmlexecutablecontent.cpp
+++ b/src/scxml/qscxmlexecutablecontent.cpp
@@ -418,15 +418,17 @@ const InstructionId *QScxmlExecutionEngine::step(const InstructionId *ip, bool *
qCDebug(qscxmlLog) << stateMachine << "Executing log step";
const Log *log = reinterpret_cast<const Log *>(instr);
ip += log->size();
- QString str = dataModel->evaluateToString(log->expr, ok);
- if (*ok) {
- const QString label = tableData->string(log->label);
- qCDebug(scxmlLog) << label << ":" << str;
- QMetaObject::invokeMethod(stateMachine,
- "log",
- Qt::QueuedConnection,
- Q_ARG(QString, label),
- Q_ARG(QString, str));
+ if (log->expr != NoEvaluator) {
+ const QString str = dataModel->evaluateToString(log->expr, ok);
+ if (*ok) {
+ const QString label = tableData->string(log->label);
+ qCDebug(scxmlLog) << label << ":" << str;
+ QMetaObject::invokeMethod(stateMachine,
+ "log",
+ Qt::QueuedConnection,
+ Q_ARG(QString, label),
+ Q_ARG(QString, str));
+ }
}
return ip;
}