* Bug #14553 fixed - find(a=b) crashed Scilab. 45/18545/4
Adeline CARNIS [Mon, 12 Sep 2016 11:55:54 +0000 (13:55 +0200)]
Change-Id: I23da1745c64f6ad262743444efac9413504290d5

scilab/CHANGES.md
scilab/modules/boolean/sci_gateway/cpp/sci_find.cpp
scilab/modules/boolean/tests/nonreg_tests/bug_14553.dia.ref [new file with mode: 0644]
scilab/modules/boolean/tests/nonreg_tests/bug_14553.tst [new file with mode: 0644]

index 57827bc..243ffb8 100644 (file)
@@ -355,6 +355,7 @@ Bug Fixes
 * [#14461](http://bugzilla.scilab.org/show_bug.cgi?id=14461): Calling `grand(n, "markov", P, x0)` did not return all outputs.
 * [#14513](http://bugzilla.scilab.org/show_bug.cgi?id=14513): `isqual` comparing two built-in functions yielded an error.
 * [#14527](http://bugzilla.scilab.org/show_bug.cgi?id=14527): Calling pathconvert function without parameters crashed Scilab.
+* [#14553](http://bugzilla.scilab.org/show_bug.cgi?id=14553): find(a=b) crashed Scilab.
 * [#14557](http://bugzilla.scilab.org/show_bug.cgi?id=14557): `csim` failed when the system has no state.
 * [#14564](http://bugzilla.scilab.org/show_bug.cgi?id=14564): fieldnames failed for empty structs.
 * [#14582](http://bugzilla.scilab.org/show_bug.cgi?id=14582): `gettext`or it alias `_()` were sometimes applied to broken literal strings
index 3ff53ab..6c44c82 100644 (file)
@@ -33,7 +33,8 @@ static void getCoordFromIndex(int _iIndex, int* _piIndexes, int* _piDims, int _i
 types::Function::ReturnValue sci_find(types::typed_list &in, int _iRetCount, types::typed_list &out)
 {
     int iMax = -1;
-    if (in.size() > 2)
+
+    if (in.size() == 0 || in.size() > 2)
     {
         Scierror(77, _("%s: Wrong number of input argument(s): %d to %d expected.\n"), "find", 1, 2);
         return types::Function::Error;
diff --git a/scilab/modules/boolean/tests/nonreg_tests/bug_14553.dia.ref b/scilab/modules/boolean/tests/nonreg_tests/bug_14553.dia.ref
new file mode 100644 (file)
index 0000000..ff82af6
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 14553 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=14553
+//
+// <-- Short Description -->
+//    find(a=b) crashed Scilab.
+a = 3;
+b = 5;
+someStr = "find(a = b)";
+assert_checkfalse(execstr(someStr, "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of input argument(s): %d to %d expected.\n"), "find", 1, 2);
+assert_checkerror(someStr, refMsg);
diff --git a/scilab/modules/boolean/tests/nonreg_tests/bug_14553.tst b/scilab/modules/boolean/tests/nonreg_tests/bug_14553.tst
new file mode 100644 (file)
index 0000000..ff82af6
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 14553 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=14553
+//
+// <-- Short Description -->
+//    find(a=b) crashed Scilab.
+a = 3;
+b = 5;
+someStr = "find(a = b)";
+assert_checkfalse(execstr(someStr, "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of input argument(s): %d to %d expected.\n"), "find", 1, 2);
+assert_checkerror(someStr, refMsg);