Scilab crashes with: c{}=1 (with c is a cell). 17/17117/3
Charlotte HECQUET [Thu, 27 Aug 2015 08:50:00 +0000 (10:50 +0200)]
Change-Id: Ib739d85d5846fcd391b50eaea662a4fb24481299

scilab/modules/ast/src/cpp/ast/visitor_common.cpp
scilab/modules/ast/tests/unit_tests/insert.dia.ref
scilab/modules/ast/tests/unit_tests/insert.tst

index 8735447..ae86ffc 100644 (file)
@@ -1489,10 +1489,10 @@ InternalType* evaluateFields(const ast::Exp* _pExp, std::list<ExpHistory*>& fiel
             typed_list* pArgs = pEH->getArgs();
 
             // should never occured
-            if (pArgs == NULL)
+            if (pArgs == NULL || pArgs->size() == 0)
             {
                 std::wostringstream os;
-                os << _W("evaluateFields : Cannot insert without arguments.");
+                os << _W("Wrong insertion : Cannot insert without arguments.");
                 throw ast::InternalError(os.str(), 999, _pExp->getLocation());
             }
 
index 72ed0b4..c78da8e 100644 (file)
@@ -415,3 +415,7 @@ assert_checktrue(err <> 0);
 st=initst();
 err=execstr("st(1:2).f(1:4).e = 5;", "errcatch");
 assert_checktrue(err <> 0);
+// insert without arguments
+errmsg = msprintf(gettext("Wrong insertion : Cannot insert without arguments."));
+assert_checkerror("a()=1;", errmsg);
+assert_checkerror("a{}=1;", errmsg);
index 09e3772..b639172 100644 (file)
@@ -519,3 +519,8 @@ assert_checktrue(err <> 0);
 st=initst();
 err=execstr("st(1:2).f(1:4).e = 5;", "errcatch");
 assert_checktrue(err <> 0);
+
+// insert without arguments
+errmsg = msprintf(gettext("Wrong insertion : Cannot insert without arguments."));
+assert_checkerror("a()=1;", errmsg);
+assert_checkerror("a{}=1;", errmsg);