* Bug 16204 fixed: for i=1:$, end crashed Scilab 85/21485/3
St├ęphane Mottelet [Thu, 4 Jun 2020 15:29:37 +0000 (17:29 +0200)]
https://bugzilla.scilab.org/show_bug.cgi?id=16204

Change-Id: I89e3d248a59d74d25dec58ba01ffac1d6a2b1cbf

scilab/CHANGES.md
scilab/modules/ast/src/cpp/ast/runvisitor.cpp

index dd3dc99..e62ba83 100644 (file)
@@ -505,6 +505,7 @@ Bug Fixes
 * [#16197](https://bugzilla.scilab.org/16197): result of extraction was not decomplexified when applicable.
 * [#16199](https://bugzilla.scilab.org/16199): In the documentation, `zpk2tf` and `zpk2ss` examples yielded an error.
 * [#16200](https://bugzilla.scilab.org/16200): Concatenation of transposed cells crashed Scilab.
+* [#16204](https://bugzilla.scilab.org/16204): `for i=1:$, end` crashed Scilab.
 * [#16208](https://bugzilla.scilab.org/16208): Using 3D string matrix with old C-api gateways may crash Scilab.
 * [#16209](https://bugzilla.scilab.org/16209): `grand` causes a freeze after several consecutive calls when using default base generator.
 * [#16210](https://bugzilla.scilab.org/16210): The uicontrol.units = "normalized" property was not described.
index 78113c0..8331130 100644 (file)
@@ -662,6 +662,12 @@ void RunVisitorT<T>::visitprivate(const ForExp  &e)
     {
         //get IL
         types::ImplicitList* pVar = pIT->getAs<types::ImplicitList>();
+        if (pVar->isComputable() == false)
+        {
+            std::wostringstream os;
+            os << _W("Invalid index.\n");
+            throw ast::InternalError(os.str(), 999, e.getLocation());
+        }
         //get IL initial Type
         types::InternalType * pIL = pVar->getInitalType();
         //std::cout << "for IL: " << pIL << std::endl;