* Bug 15647 fixed: now spzeros(-1,-1) raises an error 11/20211/5
St├ęphane Mottelet [Wed, 4 Jul 2018 08:51:44 +0000 (10:51 +0200)]
http://bugzilla.scilab.org/show_bug.cgi?id=15647

Change-Id: I7b8e54eff85e4b47ef86536efe48e4b6b4f7bb27

scilab/CHANGES.md
scilab/modules/sparse/sci_gateway/cpp/sci_spzeros.cpp
scilab/modules/sparse/tests/nonreg_tests/bug_15647.tst [new file with mode: 0644]

index ddd4df7..1810435 100644 (file)
@@ -477,6 +477,7 @@ Known issues
 * [#15632](http://bugzilla.scilab.org/show_bug.cgi?id=15632): `x=[];x()=1` crashed Scilab.
 * [#15636](http://bugzilla.scilab.org/show_bug.cgi?id=15636): Clicking on its icon did not always give focus to Help browser
 * [#15648](http://bugzilla.scilab.org/show_bug.cgi?id=15648): `sparse([1 1],1,[-1 -1])` crashed scilab
+* [#15647](http://bugzilla.scilab.org/show_bug.cgi?id=15647): `spzeros(-1,-1)` yielded a corrupted result
 * [#15653](http://bugzilla.scilab.org/show_bug.cgi?id=15653): sparse - complex substraction was corrupted
 * [#15659](http://bugzilla.scilab.org/show_bug.cgi?id=15659): `plot(x,fun)` could be very slow and crash Scilab.
 * [#15670](http://bugzilla.scilab.org/show_bug.cgi?id=15670): `set(H, prop1,val1, prop2,val2, ..)`: Setting multiple properties for a vector of handles yielded an error.
index bce94fa..2a78d43 100644 (file)
@@ -71,6 +71,20 @@ types::Function::ReturnValue sci_spzeros(types::typed_list &in, int _iRetCount,
             return types::Function::Error;
         }
 
+        if (pDblRows->get(0) != (double) ((unsigned int) pDblRows->get(0)))
+        {
+
+            Scierror(999, _("%s: Wrong value for input argument #%d: Scalar positive integer expected.\n"), "spzeros", 1);
+            return types::Function::Error;
+        }
+
+        if (pDblCols->get(0) != (double) ((unsigned int) pDblCols->get(0)))
+        {
+
+            Scierror(999, _("%s: Wrong value for input argument #%d: Scalar positive integer expected.\n"), "spzeros", 2);
+            return types::Function::Error;
+        }
+
         pSpOut = new types::Sparse((int)pDblRows->get(0), (int)pDblCols->get(0), false);
 
     }
diff --git a/scilab/modules/sparse/tests/nonreg_tests/bug_15647.tst b/scilab/modules/sparse/tests/nonreg_tests/bug_15647.tst
new file mode 100644 (file)
index 0000000..d5ac3f3
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2018 - St├ęphane Mottelet
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
+// <-- ENGLISH IMPOSED -->
+//
+// <-- Non-regression test for bug 15647 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=15647
+//
+// <-- Short Description -->
+// spzeros(-1,-1) yields a corrupted result
+
+errMsg = _("%s: Wrong value for input argument #%d: Scalar positive integer expected.\n")
+assert_checkerror("spzeros(-1,-1)", msprintf(errMsg, "spzeros", 1));
+assert_checkerror("spzeros(1,-1)", msprintf(errMsg, "spzeros", 2));