* Bug #9074 fixed - Calling a function on the context gave a warning. 00/10600/2
Clément DAVID [Mon, 25 Feb 2013 13:37:01 +0000 (14:37 +0100)]
Change-Id: Iab559c041a43d2ed8d3cfa3c76e02c590aea513a

scilab/CHANGES_5.4.X
scilab/modules/scicos/macros/scicos_scicos/script2var.sci
scilab/modules/scicos/tests/unit_tests/script2var.dia.ref [new file with mode: 0644]
scilab/modules/scicos/tests/unit_tests/script2var.tst [new file with mode: 0644]

index cbd35d4..5e341a4 100644 (file)
@@ -109,6 +109,8 @@ Xcos
 
 * Avoid some scopes blink on simulation.
 
+* Bug #9074 fixed - Calling a function on the context gave a warning.
+
 * Bug #10040 fixed - VARIABLE_DELAY documentation does not fully describe the
                      initial value behavioral.
 
index 7503104..291bd95 100644 (file)
@@ -60,15 +60,20 @@ function [%ll,%ierr]=getvardef(%txt,%ll)
 
   %ierr=execstr(%txt,'errcatch')
   if %ierr<>0 then mprintf("%s\n",lasterror()), return,end
-
+  
   %mm=who('get')
   %mm=%mm(1:size(%mm,'*')-%nww)
   //%mm contains the list of the variables defined by execstr(%txt,'errcatch')
   for %mi=%mm(:)'
-    if %mi=="scs_m" then
+    clear %v
+    %v=evstr(%mi);
+    
+    if %mi=="scs_m" | typeof(%v)=="scs_m" then
       mprintf(_("The variable name %s cannot be used as block parameter: ignored"),"scs_m")
+    elseif or(type(%v)==[11 13 14]) then
+        continue
     else
-      %ll(%mi)=evstr(%mi)
+      %ll(%mi)=%v;
     end
   end
 endfunction
diff --git a/scilab/modules/scicos/tests/unit_tests/script2var.dia.ref b/scilab/modules/scicos/tests/unit_tests/script2var.dia.ref
new file mode 100644 (file)
index 0000000..b69c3fa
--- /dev/null
@@ -0,0 +1,36 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+loadXcosLibs();
+%txt=["a=1";
+"function r=foo(v)";
+"    r=v;";
+"endfunction";
+"b=2";
+"c=foo(3)";
+"d=ones(1,1);";
+""];
+%ll=struct();
+[%ll,%ierr] = script2var(%txt, %ll)
+ %ierr  =
+    0.  
+ %ll  =
+   d: 1
+   c: 3
+   b: 2
+   a: 1
+[%ll,%ierr] = script2var(%txt, %ll)
+ %ierr  =
+    0.  
+ %ll  =
+   d: 1
+   c: 3
+   b: 2
+   a: 1
diff --git a/scilab/modules/scicos/tests/unit_tests/script2var.tst b/scilab/modules/scicos/tests/unit_tests/script2var.tst
new file mode 100644 (file)
index 0000000..46ddeec
--- /dev/null
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+loadXcosLibs();
+
+%txt=["a=1";
+"function r=foo(v)";
+"    r=v;";
+"endfunction";
+"b=2";
+"c=foo(3)";
+"d=ones(1,1);";
+""];
+
+%ll=struct();
+[%ll,%ierr] = script2var(%txt, %ll)
+
+[%ll,%ierr] = script2var(%txt, %ll)
+