Bug #14326 fixed - Corrected deletion of element of a structure 95/18195/6
Nicolas [Mon, 30 May 2016 14:37:57 +0000 (16:37 +0200)]
Change-Id: I05809c7763fde5346bb04669f739a8045f07823f

scilab/CHANGES
scilab/modules/overloading/macros/%s_i_st.sci
scilab/modules/overloading/tests/nonreg_tests/bug_14326.dia.ref [new file with mode: 0644]
scilab/modules/overloading/tests/nonreg_tests/bug_14326.tst [new file with mode: 0644]

index 36d2d19..d6d8195 100644 (file)
@@ -429,6 +429,8 @@ In 6.0.0:
 
 * Bug #14297 fixed - Updated cumsum y=cumsum(x) description. It was just a copy-paste of the help page "sum"
 
+* Bug #14326 fixed - Corrected deletion of "elements" of a structure. (Now can delete)
+
 * Bug #14347 fixed - plot2d crashed with multiple entries (non regression test).
 
 * Bug #14359 fixed - Black Hole demo updated. Stop and Clear buttons did not have priority tag set. Callback_type property has been added and set to 10.
index 5946db9..3ffe43d 100644 (file)
@@ -23,7 +23,7 @@ function out=%s_i_st(varargin)
         // st(i,:)=[] or st(:,j)=[] or st(i)=[] or st(:,j,:,:)=[]
         //remove the substruct
         out=varargin($);
-        dims=double(out.dims);
+        dims=size(out)
 
         // Make the dimensions and the indices fit
         Ndims=size(dims,"*")
@@ -78,11 +78,9 @@ function out=%s_i_st(varargin)
             for f=Fout
                 out(f)=list()
             end
-            out.dims=int32([0 0])
         else
             //replace st(:,j,:,:)=[] by st=st(:,cj,:,:) where cj is the
             //complement of j with respect to the associated dimension of st
-            out.dims=int32(dims)
             varargin(loc)=cj
             out=out(varargin(1:Ndims))
         end
diff --git a/scilab/modules/overloading/tests/nonreg_tests/bug_14326.dia.ref b/scilab/modules/overloading/tests/nonreg_tests/bug_14326.dia.ref
new file mode 100644 (file)
index 0000000..17d5c74
--- /dev/null
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Pierre-Aimé AGNEL
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 14326 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14326
+//
+// <-- Short Description -->
+// deletion of a element in a structure was impossible
+for i=1:10
+    demo(i)=struct('a',[i i*2],'b','demo '+string(i));
+end
+ierr = execstr("demo(4) = [];", "errcatch");
+assert_checkequal(ierr, 0);
diff --git a/scilab/modules/overloading/tests/nonreg_tests/bug_14326.tst b/scilab/modules/overloading/tests/nonreg_tests/bug_14326.tst
new file mode 100644 (file)
index 0000000..faf7b54
--- /dev/null
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Pierre-Aimé AGNEL
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 14326 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14326
+//
+// <-- Short Description -->
+// deletion of a element in a structure was impossible
+
+for i=1:10
+    demo(i)=struct("a",[i i*2],"b","demo "+string(i));
+end
+
+ierr = execstr("demo(4) = [];", "errcatch");
+
+assert_checkequal(ierr, 0);