[bug_3489] overwite of protected variable fixed 41/18741/3
Cedric Delamarre [Fri, 2 Dec 2016 16:47:24 +0000 (17:47 +0100)]
Change-Id: I79402aec9011df18b6a3675f1938137928366ed3

scilab/modules/ast/src/cpp/symbol/variables.cpp
scilab/modules/core/tests/nonreg_tests/bug_3489.dia.ref
scilab/modules/core/tests/nonreg_tests/bug_3489.tst

index 99445cf..d83addd 100644 (file)
@@ -463,7 +463,10 @@ bool Variables::putInPreviousScope(Variable* _var, types::InternalType* _pIT, in
     }
     else
     {
-        return _var->put(_pIT, _iLevel);
+        if (_var->top()->protect == false)
+        {
+            return _var->put(_pIT, _iLevel);
+        }
     }
 
     return false;
index 34acb74..52fc0e0 100644 (file)
@@ -4,6 +4,7 @@
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
+// <-- CLI SHELL MODE -->
 // <-- Non-regression test for bug 3489 -->
 //
 // <-- Bugzilla URL -->
 // <-- Short Description -->
 //catching protected variable redefinition
 prot=funcprot();funcprot(0);
-if execstr('%pi=3','errcatch')==0 then bugmes();quit;end
+if execstr("%pi=3","errcatch")==0 then bugmes();quit;end
 r=%f;
-try,execstr('%pi=3'),catch,r=%t,end
- r  =
-  T  
+try,execstr("%pi=3"),catch,r=%t;end
 if ~r then bugmes();quit;end
 r=%f;
-try,%pi=3,catch,r=%t,end
- r  =
-  T  
+try,%pi=3,catch,r=%t;end
 if ~r then bugmes();quit;end
 r=%f;
 function setpi(pi), %pi = resume(pi),endfunction
-try,setpi(3),catch,r=%t,end
- r  =
-  T  
+try,setpi(3),catch,r=%t;end
 if ~r then bugmes();quit;end
 r=%f;clear a
 function a=setpi(pi), a=228;%pi = resume(pi),endfunction
-try,setpi(3),catch,r=%t,end
- r  =
-  T  
+try,setpi(3),catch,r=%t;end
 if ~r then bugmes();quit;end
-if exists('a')<>0 then bugmes();quit;end
-function setpi(pi), execstr('%pi = resume(pi)'),endfunction
+if exists("a")<>0 then bugmes();quit;end
+function setpi(pi), execstr("%pi = resume(pi)"),endfunction
 r=%f;
-try,setpi(3),catch,r=%t,end
- r  =
-  T  
+try,setpi(3),catch,r=%t;end
 if ~r then bugmes();quit;end
 clear a
-function a=setpi(pi),a=123; execstr('%pi = resume(pi)'),endfunction
+function a=setpi(pi),a=123; execstr("%pi = resume(pi)"),endfunction
 r=%f;
-try,setpi(3),catch,r=%t,end
- r  =
-  T  
+try,setpi(3),catch,r=%t;end
 if ~r then bugmes();quit;end
-if exists('a')<>0 then bugmes();quit;end
+if exists("a")<>0 then bugmes();quit;end
 funcprot(prot);
index bad610b..bc4e70d 100644 (file)
@@ -4,7 +4,7 @@
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
-
+// <-- CLI SHELL MODE -->
 // <-- Non-regression test for bug 3489 -->
 //
 // <-- Bugzilla URL -->
 //catching protected variable redefinition
 
 prot=funcprot();funcprot(0);
-if execstr('%pi=3','errcatch')==0 then pause,end
+if execstr("%pi=3","errcatch")==0 then pause,end
 
 r=%f;
-try,execstr('%pi=3'),catch,r=%t,end
+try,execstr("%pi=3"),catch,r=%t;end
 if ~r then pause,end
 
 
 r=%f;
-try,%pi=3,catch,r=%t,end
+try,%pi=3,catch,r=%t;end
 if ~r then pause,end
 
 
 
 r=%f;
 function setpi(pi), %pi = resume(pi),endfunction
-try,setpi(3),catch,r=%t,end
+try,setpi(3),catch,r=%t;end
 if ~r then pause,end
 
 r=%f;clear a
 function a=setpi(pi), a=228;%pi = resume(pi),endfunction
-try,setpi(3),catch,r=%t,end
+try,setpi(3),catch,r=%t;end
 if ~r then pause,end
-if exists('a')<>0 then pause,end
+if exists("a")<>0 then pause,end
 
 
 
-function setpi(pi), execstr('%pi = resume(pi)'),endfunction
+function setpi(pi), execstr("%pi = resume(pi)"),endfunction
 r=%f;
-try,setpi(3),catch,r=%t,end
+try,setpi(3),catch,r=%t;end
 if ~r then pause,end
 
 clear a
-function a=setpi(pi),a=123; execstr('%pi = resume(pi)'),endfunction
+function a=setpi(pi),a=123; execstr("%pi = resume(pi)"),endfunction
 r=%f;
-try,setpi(3),catch,r=%t,end
+try,setpi(3),catch,r=%t;end
 if ~r then pause,end
-if exists('a')<>0 then pause,end
+if exists("a")<>0 then pause,end
 
 
 funcprot(prot);