* Bug 15668 fixed: save(file) don't save predefined variables any more 03/20903/3
St├ęphane Mottelet [Fri, 22 Mar 2019 13:31:40 +0000 (14:31 +0100)]
http://bugzilla.scilab.org/show_bug.cgi?id=15668

Change-Id: Ia46f3167b7cc7763de518f087aa203d74374cf17

scilab/CHANGES.md
scilab/modules/hdf5/sci_gateway/cpp/sci_hdf5_save.cpp
scilab/modules/hdf5/tests/nonreg_tests/bug_15668.tst [new file with mode: 0644]

index e92b7c7..e2ca3b2 100644 (file)
@@ -150,6 +150,7 @@ Bug Fixes
 * [#15425](http://bugzilla.scilab.org/show_bug.cgi?id=15425): The Kronecker product `a.*.b` failed when `a` or `b` or both are hypermatrices, with one or both being polynomials or rationals.
 * [#15523](http://bugzilla.scilab.org/show_bug.cgi?id=15523): `%ODEOPTIONS(1)=2` didn't work with solvers 'rk' and 'rkf' 
 * [#15577](http://bugzilla.scilab.org/show_bug.cgi?id=15577): `edit` did not accept a line number as text, as with `edit linspace 21`.
+* [#15668](http://bugzilla.scilab.org/show_bug.cgi?id=15668): `save(filename)` saved all predefined Scilab constants %e %pi etc.. (regression)
 * [#15812](http://bugzilla.scilab.org/show_bug.cgi?id=15812): On assigning variables the source variable may become become corrupted
 * [#15840](http://bugzilla.scilab.org/show_bug.cgi?id=15840): `grand(1,"prm",m)` yielded an unsqueezed size([size(m) 1]) hypermatrix
 * [#15964](http://bugzilla.scilab.org/show_bug.cgi?id=15954): A complex empty sparse matrix could be obtained after insertion.
@@ -166,3 +167,4 @@ 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.
 
+
index 6790d4c..a8d6bee 100644 (file)
@@ -145,8 +145,8 @@ types::Function::ReturnValue sci_hdf5_save(types::typed_list &in, int _iRetCount
         {
             types::InternalType* pIT = ctx->getAtLevel(symbol::Symbol(wvar), SCOPE_CONSOLE);
 
-            //do not save macrofile
-            if (pIT->isMacroFile() || pIT->isFunction() || pIT->isLibrary())
+            //do not save protected variables nor macrofile
+            if (ctx->isprotected(symbol::Symbol(wvar)) || pIT->isMacroFile() || pIT->isFunction() || pIT->isLibrary())
             {
                 continue;
             }
diff --git a/scilab/modules/hdf5/tests/nonreg_tests/bug_15668.tst b/scilab/modules/hdf5/tests/nonreg_tests/bug_15668.tst
new file mode 100644 (file)
index 0000000..9857abd
--- /dev/null
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2019 - St├ęphane MOTTELET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
+//
+// <-- Non-regression test for bug 15668 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=15668
+//
+// <-- Short Description -->
+// save(filename) saves all predefined Scilab constants %e %pi etc.. (regression)
+
+
+clear
+x=1;
+save(fullfile(TMPDIR,"session.sod"));
+assert_checkequal(listvarinfile(fullfile(TMPDIR,"session.sod")),"x")
\ No newline at end of file