* Bug 15079 fixed: extraction & insertion in subchildren could fail 97/19197/3
Samuel GOUGEON [Sat, 18 Mar 2017 15:51:38 +0000 (16:51 +0100)]
  http://bugzilla.scilab.org/15079

Change-Id: Ic6818a4d8bc362a63ccbd59b6fcc80c7df943023

scilab/CHANGES.md
scilab/modules/graphics/macros/%h_get.sci
scilab/modules/graphics/tests/nonreg_tests/bug_15079.tst [new file with mode: 0644]

index 31dcadf..26938f4 100644 (file)
@@ -365,6 +365,7 @@ the [development mailing list](dev@lists.scilab.org) for a particular toolbox.
 * [#15054](http://bugzilla.scilab.org/show_bug.cgi?id=15054): The callbacks of `wfir_gui()` were not prioritary.
 * [#15057](http://bugzilla.scilab.org/show_bug.cgi?id=15057): Matplot .data assignation did not take care of >2 dimension
 * [#15060](http://bugzilla.scilab.org/show_bug.cgi?id=15060): `fplot3d` did not draw because of an addition with an empty matrix which now returns an empty matrix.
+* [#15060](http://bugzilla.scilab.org/show_bug.cgi?id=15079): When all children of a graphic handle have not the same number of sub-children, any vectorized extraction or insertion in subchildren failed.
 
 ### Bugs fixed in 6.0.0:
 * [#592](http://bugzilla.scilab.org/show_bug.cgi?id=592): `linspace(a, b, n<=0)` returned `b` instead of `[]`
index 6b4d33f..ffca28c 100644 (file)
@@ -16,7 +16,7 @@ function out_vect = %h_get(varargin)
         hdl = varargin(1)
         str = varargin(2)
         for i=1:size(hdl,"*")
-            out_vect = [out_vect, get(hdl(i),str)]
+            out_vect = [out_vect ; get(hdl(i),str)]
         end
 
     elseif (lstsize(varargin) == 1)
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_15079.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_15079.tst
new file mode 100644 (file)
index 0000000..ee13194
--- /dev/null
@@ -0,0 +1,31 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2017 - Samuel GOUGEON
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+// <-- NO CHECK REF -->
+//
+// <-- Non-regression test for bug 15079 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/15079
+//
+// <-- Short Description -->
+// When all children of a graphic handle have not the same number of sub-children,
+// any vectorized extraction or insertion in subchildren failed.
+
+n2 = -1000:200:1000;
+nS = -1000:200:1000;
+[N2,NS] = ndgrid(n2, nS);
+N1 = 2.6*N2 + (3.6)*NS;
+clf
+contour(n2 ,nS ,N1/100,[-60:10:60]);
+ca = gca();
+assert_checkequal(execstr("ca.children.children", "errcatch"), 0);
+assert_checkequal(execstr("ca.children.children(2:2:$)", "errcatch"), 0);
+assert_checkequal(ca.children.children(2:2:$).type, repmat("Polyline",12,1));
+assert_checkequal(execstr("ca.children.children(2:2:$).foreground = color(''red'')", "errcatch"), 0);
+assert_checkequal(ca.children.children(2:2:$).foreground, repmat(color('red'),12,1));