浏览代码

Small issue in 'exprstat'

The code should not compute an instruction address before checking that
it exists. (Virtually no machine complains of computing an invalid
address, as long as the address is not used, but for ISO C that is
undefined behavior.)
Roberto Ierusalimschy 5 年之前
父节点
当前提交
cac075a122
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      lparser.c

+ 2 - 1
lparser.c

@@ -1822,8 +1822,9 @@ static void exprstat (LexState *ls) {
     restassign(ls, &v, 1);
   }
   else {  /* stat -> func */
-    Instruction *inst = &getinstruction(fs, &v.v);
+    Instruction *inst;
     check_condition(ls, v.v.k == VCALL, "syntax error");
+    inst = &getinstruction(fs, &v.v);
     SETARG_C(*inst, 1);  /* call statement uses no results */
   }
 }