Bug 12778 fixed: Bad result after insertion of empty matrix in integer matrix 99/12299/2
Calixte DENIZET [Mon, 19 Aug 2013 16:01:30 +0000 (18:01 +0200)]
Change-Id: I574658b2393c4b3efe741fb7359cd6276616e3f0

scilab/CHANGES_5.5.X
scilab/modules/integer/src/fortran/i_i_i.f
scilab/modules/integer/tests/nonreg_tests/bug_12778.dia.ref [new file with mode: 0644]
scilab/modules/integer/tests/nonreg_tests/bug_12778.tst [new file with mode: 0644]

index ce03cef..3ce74bf 100644 (file)
@@ -539,6 +539,8 @@ Bug fixes
 
 * Bug #12775 fixed - Some related functions were not listed in "See also" section of routh_t help page.
 
+* Bug #12778 fixed - Insertion of an empty matrix in an integer matrix led to a wrong result.
+
 * Bug #12779 fixed - savewave() had a miscoding in the internal function write_wavedat().
 
 * Bug #12783 fixed - There were some inconsistent error messages in dsearch().
index e57abe3..73f5e19 100644 (file)
@@ -589,8 +589,8 @@ c     form resulting variable
       istk(il1+3)=it2
       if(lr.ne.l1) then
          call gencopy(it2,mi,istk(lr),1,istk(l1),1)
-         lstk(top+1)=sadr(l1+memused(it2,mi))
       endif
+      lstk(top+1)=sadr(l1+memused(it2,mi))
       go to 999
 
  90   continue
diff --git a/scilab/modules/integer/tests/nonreg_tests/bug_12778.dia.ref b/scilab/modules/integer/tests/nonreg_tests/bug_12778.dia.ref
new file mode 100644 (file)
index 0000000..63ee363
--- /dev/null
@@ -0,0 +1,94 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+//
+//  This file is distributed under the same license as the Scilab package.
+// ===========================================================================
+//
+// <-- Non-regression test for bug 12778 -->
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12778
+//
+// <-- Short Description -->
+// Weird bug when inserting an empty matrix in int matrix
+x = int8([1 0 -2 1 3 7])
+ x  =
+  1  0 -2  1  3  7  
+x(4)=[]
+ x  =
+  1  0 -2  3  7  
+y = int8([1 0 -2 3 7])
+ y  =
+  1  0 -2  3  7  
+assert_checkequal(x, y);
+x = int16([1 0 -2 1 3 7])
+ x  =
+  1  0 -2  1  3  7  
+x(4)=[]
+ x  =
+  1  0 -2  3  7  
+y = int16([1 0 -2 3 7])
+ y  =
+  1  0 -2  3  7  
+assert_checkequal(x, y);
+x = int32([1 0 -2 1 3 7])
+ x  =
+  1  0 -2  1  3  7  
+x(4)=[]
+ x  =
+  1  0 -2  3  7  
+y = int32([1 0 -2 3 7])
+ y  =
+  1  0 -2  3  7  
+assert_checkequal(x, y);
+x = uint8([1 0 2 1 3 7])
+ x  =
+  1  0  2  1  3  7  
+x(4)=[]
+ x  =
+  1  0  2  3  7  
+y = uint8([1 0 2 3 7])
+ y  =
+  1  0  2  3  7  
+assert_checkequal(x, y);
+x = uint16([1 0 2 1 3 7])
+ x  =
+  1  0  2  1  3  7  
+x(4)=[]
+ x  =
+  1  0  2  3  7  
+y = uint16([1 0 2 3 7])
+ y  =
+  1  0  2  3  7  
+assert_checkequal(x, y);
+x = uint32([1 0 2 1 3 7])
+ x  =
+  1  0  2  1  3  7  
+x(4)=[]
+ x  =
+  1  0  2  3  7  
+y = uint32([1 0 2 3 7])
+ y  =
+  1  0  2  3  7  
+assert_checkequal(x, y);
diff --git a/scilab/modules/integer/tests/nonreg_tests/bug_12778.tst b/scilab/modules/integer/tests/nonreg_tests/bug_12778.tst
new file mode 100644 (file)
index 0000000..b43ce67
--- /dev/null
@@ -0,0 +1,53 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+//
+//  This file is distributed under the same license as the Scilab package.
+// ===========================================================================
+//
+// <-- Non-regression test for bug 12778 -->
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12778
+//
+// <-- Short Description -->
+// Weird bug when inserting an empty matrix in int matrix
+
+x = int8([1 0 -2 1 3 7])
+x(4)=[]
+y = int8([1 0 -2 3 7])
+
+assert_checkequal(x, y);
+
+x = int16([1 0 -2 1 3 7])
+x(4)=[]
+y = int16([1 0 -2 3 7])
+
+assert_checkequal(x, y);
+
+x = int32([1 0 -2 1 3 7])
+x(4)=[]
+y = int32([1 0 -2 3 7])
+
+assert_checkequal(x, y);
+
+x = uint8([1 0 2 1 3 7])
+x(4)=[]
+y = uint8([1 0 2 3 7])
+
+assert_checkequal(x, y);
+
+x = uint16([1 0 2 1 3 7])
+x(4)=[]
+y = uint16([1 0 2 3 7])
+
+assert_checkequal(x, y);
+
+x = uint32([1 0 2 1 3 7])
+x(4)=[]
+y = uint32([1 0 2 3 7])
+
+assert_checkequal(x, y);
+