<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Your test mix struct and lists can you reproduce it without using
a struct ?<br>
</p>
<div class="moz-cite-prefix">Le 16/10/2020 à 14:15, Arvid Rosén a
écrit :<br>
</div>
<blockquote type="cite"
cite="mid:285DA550-BF4C-4446-8E9D-E49C07DCE5D3@softube.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0cm;
font-size:10.0pt;
font-family:"Courier New";
mso-fareast-language:EN-GB;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:"Consolas",serif;
mso-fareast-language:EN-US;}
span.EmailStyle22
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}</style>
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I already filed a report
here:<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US"> </span><span
style="color:black;mso-fareast-language:EN-GB"><a
href="https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/bugzilla.scilab.org/show_bug.cgi?id=16556"
title="https://bugzilla.scilab.org/show_bug.cgi?id=16556"
moz-do-not-send="true"><span style="color:#000064">https://bugzilla.scilab.org/show_bug.cgi?id=16556</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">Do
you want a more compact example than that?<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">Here
is an even more slimmed version.<br>
<br>
<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">Cheers,<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">Arvid<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">----------<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">//
Define variables<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">testArray
= list(list([]));<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">testArray(1)(1).testMember
= 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">testArrayOrig
= testArray;<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">//
Define function<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">function
outArray = testFunc(inArray)<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">
inArray(1)(1).testMember = 5<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">
outArray = inArray;<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">endfunction<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">//
Send the variable as argument to the function<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">testArrayOut
= testFunc(testArray);<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">if
testArrayOut(1)(1).testMember == testArray(1)(1).testMember<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">
error("Error! inputArgument was changed by function");<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US">end<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="color:black;mso-fareast-language:EN-GB" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><span
style="color:#767171;mso-fareast-language:EN-GB"
lang="EN-US">-- <o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF
1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="margin-left:36.0pt"><b><span
style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Scilab
Users List <a class="moz-txt-link-rfc2396E" href="mailto:users-bounces@lists.scilab.org"><users-bounces@lists.scilab.org></a> on
behalf of Stéphane Mottelet
<a class="moz-txt-link-rfc2396E" href="mailto:stephane.mottelet@utc.fr"><stephane.mottelet@utc.fr></a><br>
<b>Reply to: </b>Users mailing list for Scilab
<a class="moz-txt-link-rfc2396E" href="mailto:users@lists.scilab.org"><users@lists.scilab.org></a><br>
<b>Date: </b>Friday, 16 October 2020 at 13:40<br>
<b>To: </b><a class="moz-txt-link-rfc2396E" href="mailto:users@lists.scilab.org">"users@lists.scilab.org"</a>
<a class="moz-txt-link-rfc2396E" href="mailto:users@lists.scilab.org"><users@lists.scilab.org></a><br>
<b>Subject: </b>Re: [Scilab-users] Scilab 6 - Problem
with scope and nested lists</span><span
style="font-size:12.0pt;color:black;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
</div>
<p style="margin-left:36.0pt">Hello,<o:p></o:p></p>
<p style="margin-left:36.0pt">I think that this is a
sufficiently serious issue to diserve a report in
bugzilla.scilab.org. But could you prepare a more compact
example ?<o:p></o:p></p>
<p style="margin-left:36.0pt">S.<o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-left:36.0pt">Le 16/10/2020
à 13:35, Arvid Rosén a écrit :<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal" style="margin-left:36.0pt"><span
lang="SV">Hi!</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span
lang="SV"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span
lang="EN-US">We have found a tricky issue when moving
over from Scilab 5 to Scilab 6 in my organization. We
have a lot of code which works with nested lists, and
functions modifying those lists. However, when a
function is called with some nested lists as an input
argument, the body of that function can change the value
of the variable in the calling scope. This was not the
case in Scilab 5, and the issue is super tricky to hunt
down in our quite extensive code base. Below is a short
example of the problem, and how to reproduce it.</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span
lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span
lang="EN-US">I have also filed a bug report here:
</span><a
href="https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/bugzilla.scilab.org/show_bug.cgi?id=16556"
moz-do-not-send="true">https://bugzilla.scilab.org/show_bug.cgi?id=16556</a><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span
lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span
lang="EN-US">Is anyone else seeing this problem? And do
you have any workarounds or other suggestions?</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span
lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span
lang="EN-US">Cheers,</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span
lang="EN-US">Arvid</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span
lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span
lang="EN-US">------</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span
lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">// Define
variables<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">testArray =
list();<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">for i=1:1:10<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">
testArray($+1) = list();<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> for
j=1:1:10<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">
testArray(i)($+1) = [];<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">
testArray(i)(j).testMember = 1;<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> end<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">end<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">testArrayOrig
= testArray;<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">// Define
functions<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">function
outArray = testFunc(inArray)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> for
i=1:1:10<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> for
j=1:1:10<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">
inArray(i)(j).testMember = 5<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> end<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> end<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> outArray
= inArray;<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">endfunction<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">// Send the
variable as argument to the function<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">if %t<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">
testArrayOut = testFunc2(testArray);<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> if
testArrayOut(1)(1).testMember ==
testArray(1)(1).testMember<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">
error("Error! inputArgument was changed by function");<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> end<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">end<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-left:36.0pt"><span
style="mso-fareast-language:EN-GB"><br>
<br>
<o:p></o:p></span></p>
<pre style="margin-left:36.0pt">_______________________________________________<o:p></o:p></pre>
<pre style="margin-left:36.0pt">users mailing list<o:p></o:p></pre>
<pre style="margin-left:36.0pt"><a href="mailto:users@lists.scilab.org" moz-do-not-send="true">users@lists.scilab.org</a><o:p></o:p></pre>
<pre style="margin-left:36.0pt"><a href="https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users" moz-do-not-send="true">https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users</a><o:p></o:p></pre>
</blockquote>
<pre style="margin-left:36.0pt">-- <o:p></o:p></pre>
<pre style="margin-left:36.0pt">Stéphane Mottelet<o:p></o:p></pre>
<pre style="margin-left:36.0pt">Ingénieur de recherche<o:p></o:p></pre>
<pre style="margin-left:36.0pt">EA 4297 Transformations Intégrées de la Matière Renouvelable<o:p></o:p></pre>
<pre style="margin-left:36.0pt">Département Génie des Procédés Industriels<o:p></o:p></pre>
<pre style="margin-left:36.0pt">Sorbonne Universités - Université de Technologie de Compiègne<o:p></o:p></pre>
<pre style="margin-left:36.0pt">CS 60319, 60203 Compiègne cedex<o:p></o:p></pre>
<pre style="margin-left:36.0pt">Tel : +33(0)344234688<o:p></o:p></pre>
<pre style="margin-left:36.0pt"><a href="https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/www.utc.fr/~mottelet" moz-do-not-send="true">http://www.utc.fr/~mottelet</a><o:p></o:p></pre>
<p class="MsoNormal" style="margin-left:36.0pt"><span
style="mso-fareast-language:EN-GB">--><o:p></o:p></span></p>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:users@lists.scilab.org">users@lists.scilab.org</a>
<a class="moz-txt-link-freetext" href="https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users">https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users</a>
</pre>
</blockquote>
<pre class="moz-signature" cols="72">--
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
<a class="moz-txt-link-freetext" href="http://www.utc.fr/~mottelet">http://www.utc.fr/~mottelet</a>
</pre>
</body>
</html>