Load multiple variables could failed due to missing 'clear' of previous variables. 35/10735/6
Antoine ELIAS [Thu, 7 Mar 2013 17:33:01 +0000 (18:33 +0100)]
Change-Id: Icafa0624b88af3a64510cac96bb2fc798a91b16c

scilab/CHANGES_5.4.X
scilab/modules/io/macros/%_sodload.sci
scilab/modules/io/tests/nonreg_tests/bug_12083.tst [new file with mode: 0644]

index 0856d95..2d74874 100644 (file)
@@ -452,6 +452,9 @@ Bug fixes
 * Bug #12077 fixed - In Scilab documentation, the attribute "bgcolor" was not handled
                      in tables.
 
+* Bug #12083 fixed - Loading multiple variables from a SOD file could failed due to
+                     a missing "clear" of previous variables.
+
 * Bug #12087 fixed - profile help page did not mention add_profiling.
 
 * Bug #12097 fixed - Scilab wrongly detected DLL platform information.
index 5c82846..2d86643 100644 (file)
@@ -797,6 +797,7 @@ function %_sodload(%__filename__, varargin)
     endfunction
 
     function macro = createMacro(macroStr, macroName)
+
         macroSt = macroStr(3);
         if macroStr(2) == %t then
             flag = "c";
@@ -845,6 +846,7 @@ function %_sodload(%__filename__, varargin)
                 %__loadFunction__(%__filename__, %__variableName__);
                 %__resumeList__($+1) = evstr(%__variableName__);
                 %__resumeVarlist__($+1) = %__variableName__;
+                clear(%__variableName__);
             else
                 error(999, msprintf(gettext("%s: variable ''%s'' does not exist in ''%s''.\n"), "load", %__variableName__, %__filename__));
             end
@@ -855,6 +857,7 @@ function %_sodload(%__filename__, varargin)
             %__loadFunction__(%__filename__, %__variableName__);
             %__resumeList__($+1) = evstr(%__variableName__);
             %__resumeVarlist__($+1) = %__variableName__;
+            clear(%__variableName__);
         end
     end
 
diff --git a/scilab/modules/io/tests/nonreg_tests/bug_12083.tst b/scilab/modules/io/tests/nonreg_tests/bug_12083.tst
new file mode 100644 (file)
index 0000000..ff626d6
--- /dev/null
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Antoine ELIAS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- WITH GRAPHIC -->
+//
+// <-- INTERACTIVE TEST -->
+//
+// <-- Non-regression test for bug 12083 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12083
+//
+// <-- Short Description -->
+// Load multiple variables could failed due to missing "clear" of previous variables.
+
+plot3d();
+f=gcf();
+
+//save f, gcf, %_plot3d, ...
+save(fullfile(SCIHOME, "bug_12083.sod"));
+
+//close Scilab and retart it
+load(fullfile(SCIHOME, "bug_12083.sod"));
+f=gcf();
+assert_checkequal(f.children(1).children(1).type, "Plot3d");
+mdelete(fullfile(SCIHOME, "bug_12083.sod"));
\ No newline at end of file