Bug 13168 fixed: Invalid interpretation of star followed by minus 78/13978/3
Calixte DENIZET [Tue, 11 Mar 2014 16:02:28 +0000 (17:02 +0100)]
Change-Id: I91725a84c1950014f1c983750fe830454dbf3eee

scilab/CHANGES_5.5.X
scilab/modules/core/src/c/terme.c
scilab/modules/core/tests/nonreg_tests/bug_13168.dia.ref [new file with mode: 0644]
scilab/modules/core/tests/nonreg_tests/bug_13168.tst [new file with mode: 0644]

index 32752be..c8be27c 100644 (file)
@@ -691,6 +691,8 @@ Scilab Bug Fixes
 
 * Bug #13165 fixed - Preferences reset did not show a confirmation pop-up.
 
+* Bug #13168 fixed - Wrong interpretation of star followed by minus fixed.
+
 * Bug #13170 fixed - Legends for plzr plots fixed.
 
 * Bug #13174 fixed - Scilab crashed after XML element removal.
index 64a5b7b..85fe4da 100644 (file)
@@ -145,7 +145,10 @@ int C2F(terme)(void)
                     /*next line added to handle syntax like a*-b for Matlab compatiblity */
                     if (C2F(com).sym == plus || C2F(com).sym == minus)
                     {
-                        C2F(recu).icall = 1;    /* escape to call expr */
+                        // Fix for bug 13168: replace icall=1 by icall=3
+                        //  * icall==1 => call expr
+                        //  * icall==3 => call fact
+                        C2F(recu).icall = 3;    /* escape to call fact */
                     }
                     else
                     {
diff --git a/scilab/modules/core/tests/nonreg_tests/bug_13168.dia.ref b/scilab/modules/core/tests/nonreg_tests/bug_13168.dia.ref
new file mode 100644 (file)
index 0000000..c13cb28
--- /dev/null
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 13168 -->
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13168
+//
+// <-- Short Description -->
+// Invalid interpretation of star followed by minus
+assert_checkequal(1*2*-2 + 1, -3);
+assert_checkequal(2*2*2*-2 + 1, -15);
+assert_checkequal(2*2*-2*2 + 1, -15);
diff --git a/scilab/modules/core/tests/nonreg_tests/bug_13168.tst b/scilab/modules/core/tests/nonreg_tests/bug_13168.tst
new file mode 100644 (file)
index 0000000..b124b3b
--- /dev/null
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 13168 -->
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13168
+//
+// <-- Short Description -->
+// Invalid interpretation of star followed by minus
+
+assert_checkequal(1*2*-2 + 1, -3);
+assert_checkequal(2*2*2*-2 + 1, -15);
+assert_checkequal(2*2*-2*2 + 1, -15);
\ No newline at end of file