* Bug 15531 fixed: [x,k]=gsort(%nan+ones(1000,1)) crashed Scilab 48/19948/5
St├ęphane Mottelet [Thu, 12 Apr 2018 16:31:05 +0000 (18:31 +0200)]
http://bugzilla.scilab.org/15531

Change-Id: Id73485c9185ccf28f027e0555c39601969aa0b1f

scilab/CHANGES.md
scilab/modules/elementary_functions/src/cpp/gsort.cpp
scilab/modules/elementary_functions/tests/nonreg_tests/bug_15531.tst [new file with mode: 0644]

index a867982..a653d48 100644 (file)
@@ -431,6 +431,7 @@ Known issues
 * [#15525](http://bugzilla.scilab.org/show_bug.cgi?id=15525): Memory allocation crashed with a simple Scilab script.
 * [#15527](http://bugzilla.scilab.org/show_bug.cgi?id=15527): `ode` gave incorrect results with %ODEOPTIONS(1)=2.
 * [#15528](http://bugzilla.scilab.org/show_bug.cgi?id=15528): savewave wrote null signal if 24 bits resolution and more than 2 channels
+* [#15531](http://bugzilla.scilab.org/show_bug.cgi?id=15531): `[x,k]=gsort(%nan+ones(1000,1))` crashed Scilab
 * [#15535](http://bugzilla.scilab.org/show_bug.cgi?id=15535): `sign(int8(0))` returned 1 instead of 0, as well with any other input encoded integer type.
 * [#15539](http://bugzilla.scilab.org/show_bug.cgi?id=15539): zero step in integer implicit list crashed Scilab.
 * [#15548](http://bugzilla.scilab.org/show_bug.cgi?id=15548): [%t %t]./[%f %f] crashed Scilab.
@@ -439,6 +440,7 @@ Known issues
 * [#15563](http://bugzilla.scilab.org/show_bug.cgi?id=15563): poly(A,v) was broken when A is a matrix.
 
 
+
 ### Bugs fixed in 6.0.1:
 * [#2441](http://bugzilla.scilab.org/show_bug.cgi?id=2441): `%onprompt()` could be defined only at the top execution level.
 * [#3256](http://bugzilla.scilab.org/show_bug.cgi?id=3256): The cursor of slider uicontrol is not displayed if the slider step is not an integer value.
index efa7794..b2df454 100644 (file)
@@ -93,6 +93,10 @@ bool descendent (std::pair<std::pair<int, int>, T> left, std::pair<std::pair<int
 {
     if (ISNAN((double)left.second))
     {
+        if (ISNAN((double)right.second))
+        {
+            return false;
+        }
         return true;
     }
 
diff --git a/scilab/modules/elementary_functions/tests/nonreg_tests/bug_15531.tst b/scilab/modules/elementary_functions/tests/nonreg_tests/bug_15531.tst
new file mode 100644 (file)
index 0000000..099b6e0
--- /dev/null
@@ -0,0 +1,19 @@
+// =============================================================================
+// 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 -->
+//
+// <-- Non-regression test for bug 15531 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=15531
+//
+// <-- Short Description -->
+// [x,k]=gsort(%nan+ones(n,1)) crashes Scilab for a large enough n
+
+[x,k]=gsort(%nan+ones(1000,1));
\ No newline at end of file