浏览代码

Error running Expression.execute after parse error

There happens a segmentation fault when you use Expression.parse() and you don't check for errors and then run Expression.execute(). So we check if there was a parse error in the execute method now.
santouits 7 年之前
父节点
当前提交
b0df0b46ac
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      core/math/expression.cpp

+ 4 - 0
core/math/expression.cpp

@@ -2120,6 +2120,10 @@ Error Expression::parse(const String &p_expression, const Vector<String> &p_inpu
 }
 }
 
 
 Variant Expression::execute(Array p_inputs, Object *p_base, bool p_show_error) {
 Variant Expression::execute(Array p_inputs, Object *p_base, bool p_show_error) {
+	if (error_set) {
+		ERR_EXPLAIN("There was previously a parse error: " + error_str);
+		ERR_FAIL_V(Variant());
+	}
 
 
 	execution_error = false;
 	execution_error = false;
 	Variant output;
 	Variant output;