extraction fixed, [].field crashes Scilab 83/21583/2
Cedric Delamarre [Mon, 5 Oct 2020 14:20:42 +0000 (16:20 +0200)]
https://bugzilla.scilab.org/show_bug.cgi?id=16069

Change-Id: If0c32aa3a842a941255051cef9b171f635462607

scilab/CHANGES.md
scilab/modules/ast/src/cpp/ast/runvisitor.cpp
scilab/modules/ast/tests/nonreg_tests/bug_16069.tst [new file with mode: 0644]

index ad1edac..86c096b 100644 (file)
@@ -293,6 +293,7 @@ Bug Fixes
 * [#15280](https://bugzilla.scilab.org/15280): `gsort` was unable to sort any hypermatrix along dimensions > "r"|"c".
 * [#15839](https://bugzilla.scilab.org/15839): `gsort`: the only sparse possible input were real or complex vectors, and only with the `g` method.
 * [#15842](https://bugzilla.scilab.org/15842): `unique` could not process 2D sparse matrices.
+* [#16069](https://bugzilla.scilab.org/16069): [].figure_name crashes Scilab.
 * [#16106](https://bugzilla.scilab.org/16106): Xcos sciblk4 user-defined blocks did not handle opar and odstate/oz correctly.
 * [#16122](https://bugzilla.scilab.org/16122): concat polynomials with <> var did not raise an error.
 * [#16151](https://bugzilla.scilab.org/16151): `isequal(1:$, 2:$)` returned `%T`.
index 8331130..cb26ce9 100644 (file)
@@ -475,7 +475,7 @@ void RunVisitorT<T>::visitprivate(const FieldExp &e)
     }
     else
     {
-        pValue->killMe();
+        clearResult();
         wchar_t szError[bsiz];
         os_swprintf(szError, bsiz, _W("Attempt to reference field of non-structure array.\n").c_str());
         CoverageInstance::stopChrono((void*)&e);
diff --git a/scilab/modules/ast/tests/nonreg_tests/bug_16069.tst b/scilab/modules/ast/tests/nonreg_tests/bug_16069.tst
new file mode 100644 (file)
index 0000000..6c10349
--- /dev/null
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2020 - Cedric Delamarre
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
+//
+// <-- Non-regression test for bug 16069 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/16069
+//
+// <-- Short Description -->
+// [].figure_name crashes Scilab
+
+msg = msprintf(gettext("Attempt to reference field of non-structure array.\n"));
+assert_checkerror("[].figure_name", msg);