* bug 14896: Using 'set' with multiple properties 23/19423/7
Antoine ELIAS [Mon, 11 Sep 2017 07:22:31 +0000 (09:22 +0200)]
Change-Id: I3746fc3fc98c3578e93e52a08d33541dc30c3f22

scilab/CHANGES.md
scilab/modules/graphics/sci_gateway/c/sci_set.c
scilab/modules/graphics/tests/nonreg_tests/bug_14896.tst [new file with mode: 0644]

index cdd3a17..7f91aad 100644 (file)
@@ -370,6 +370,7 @@ the [development mailing list](dev@lists.scilab.org) for a particular toolbox.
 * [#14637](http://bugzilla.scilab.org/show_bug.cgi?id=14367): Some Scilab 5.5.2 diagrams didn't simulate properly in Xcos.
 * [#14680](http://bugzilla.scilab.org/show_bug.cgi?id=14680): The `<` char in expression was not rendered in the icon of Xcos EXPRESSION block.
 * [#14886](http://bugzilla.scilab.org/show_bug.cgi?id=14886): Matplot save/load failed.
+* [#14896](http://bugzilla.scilab.org/show_bug.cgi?id=15272): Using `set` with multiple properties, only first one was set.
 * [#14910](http://bugzilla.scilab.org/show_bug.cgi?id=14910): The `plot()` example was displayed in overlay to the existing graphics.
 * [#14978](http://bugzilla.scilab.org/show_bug.cgi?id=15006): ode help page still contained 'root' which has been replaced by 'roots'.
 * [#15008](http://bugzilla.scilab.org/show_bug.cgi?id=15008): scilab crash in using operator AND (&, &&) or OR (| ||) with a string.
index 9afb900..83646ab 100644 (file)
@@ -464,6 +464,12 @@ int sci_set(char *fname, void *pvApiCtx)
         freeAllocatedSingleString(pstProperty);
     }
 
+    //never occurs, just to break weird optimisation (bug 14896)
+    if (iRhs == 0)
+    {
+        sciprint("%d/%d\n", i, iRhs);
+    }
+
     AssignOutputVariable(pvApiCtx, 1) = 0;
     ReturnArguments(pvApiCtx);
     return 0;
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_14896.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_14896.tst
new file mode 100644 (file)
index 0000000..9f33e75
--- /dev/null
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2017 - ESI - Antoine ELIAS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+// <-- NO CHECK REF -->
+//
+// <-- Non-regression test for bug 14896 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14896
+//
+// <-- Short Description -->
+// Using 'set' with multiple properties, only first one is set.
+
+u = uicontrol();
+set(u, "position", [10 10 100 100], "string", "ABCDE", "relief", "solid");
+assert_checkequal(u.string, "ABCDE");
+assert_checkequal(u.relief, "solid");