* Bug 16095 fixed: matrix_handles.prop = [] restored 85/20985/3
Samuel GOUGEON [Sat, 25 May 2019 10:22:04 +0000 (12:22 +0200)]
  http://bugzilla.scilab.org/16095

Change-Id: Ib17d28a9f603d94bc7f9db035c29fa36f7fb1040

scilab/CHANGES.md
scilab/modules/graphics/macros/%h_set.sci
scilab/modules/graphics/tests/unit_tests/set.tst

index 08c8ef4..29b62bf 100644 (file)
@@ -295,6 +295,7 @@ Bug Fixes
 * [#16085](http://bugzilla.scilab.org/show_bug.cgi?id=16085): insertion in an empty struct was broken.
 * [#16087](http://bugzilla.scilab.org/show_bug.cgi?id=16087): Insertion of struct in a non-empty struct crashed Scilab.
 * [#16089](http://bugzilla.scilab.org/show_bug.cgi?id=16089): x=1:1e10 freezed Scilab.
+* [#16095](http://bugzilla.scilab.org/show_bug.cgi?id=16095): For a matrix of graphic handles of same types, it was no longer possible to clear a property by assigning [].
 * [#16097](http://bugzilla.scilab.org/show_bug.cgi?id=16097): `coth()` was more than twice slower than `1./tanh()`. `tanh` and `coth` did not accept sparse-encoded input.
 * [#16104](http://bugzilla.scilab.org/show_bug.cgi?id=16104): `assert_checkequal` did not support properly or at all Nan and void in lists, Nan in sparse, implicit lists, macros, libraries, built-in functions, graphical handles. For input arrays or lists of matching typeof and sizes, the failure message did not display neither the index nor the values of the first mismatching elements.
 * [#16111](http://bugzilla.scilab.org/show_bug.cgi?id=16111): `isglobal` was not supporting non-scalar array of strings as input.
@@ -333,7 +334,7 @@ Bug Fixes
 * [#16245](http://bugzilla.scilab.org/show_bug.cgi?id=16245): `gsort` could not sort booleans.
 * [#16246](http://bugzilla.scilab.org/show_bug.cgi?id=16246): `isvector` was broken for sparse matrices.
 * [#16257](http://bugzilla.scilab.org/show_bug.cgi?id=16257): `blockdiag()` implemented to replace `sysdiag()`, improved and extended to strings.
-* [#16259](http://bugzilla.scilab.org/show_bug.cgi?id=16259): * and .* multiplications involving a sparse boolean and a double, or involving 2 booleans, were not implemented.
+* [#16259](http://bugzilla.scilab.org/show_bug.cgi?id=16259): `*` and `.*` multiplications involving a sparse boolean and a double, or involving 2 booleans, were not implemented.
 * [#16260](http://bugzilla.scilab.org/show_bug.cgi?id=16260): overloading `nnz` was not possible (regression).
 * [#16263](http://bugzilla.scilab.org/show_bug.cgi?id=16263): Polynomial insertion was broken for complex case.
 * [#16264](http://bugzilla.scilab.org/show_bug.cgi?id=16264): After empty for loop iterator was left uninitialized.
@@ -348,3 +349,4 @@ Bug Fixes
 * [#16293](http://bugzilla.scilab.org/show_bug.cgi?id=16293): Some demos run in step-by-step console mode(4) did not focus user's attention to the console to proceed.
 * [#16299](http://bugzilla.scilab.org/show_bug.cgi?id=16299): After `graypolarplot`, `colorbar` displayed an empty ungraduated color bar.
 * [#16303](http://bugzilla.scilab.org/show_bug.cgi?id=16303): log10(x) had wrong dimensions when x is an hypermatrix.
+
index ff8002e..6b3504a 100644 (file)
@@ -35,7 +35,8 @@ function hdl = %h_set(varargin)
                     h = hdl(j)  // works around http://bugzilla.scilab.org/15802
                     lhs = h(prop);     // Current handle's content
                     LHSsize = size(lhs);
-                    if and(RHSsize==LHSsize) | lhs==[]  // => repeated assignment
+                    if and(RHSsize==LHSsize) | lhs==[] | rhs==[]
+                        // => repeated assignment
                         h(prop) = rhs;
                     elseif size(lhs,"*")==1 & and(RHSsize==Hsize)
                         // => element-wise assignments
index 8418a6f..dcc298d 100644 (file)
@@ -61,6 +61,13 @@ assert_checkequal(f.color_map, cm);
 // ARRAY OF HANDLES
 // ================
 e = gce().children;  // Set of curves
+
+// Empty property => filled with a scalar => re-initialized to empty
+e.display_function_data = "test";
+assert_checkequal(e.display_function_data, emptystr(41,1)+"test");
+e.display_function_data = [];
+assert_checkequal(e.display_function_data, []);
+
 // Scalar property value (curve.thickness): repeated assignment
 L = list(e(1:3) , 2, [2 2 2]', ..
          e(1:3)', 3, [3 3 3]', ..