[Scilab-users] Scilab 6 - Problem with scope and nested lists

Stéphane Mottelet stephane.mottelet at utc.fr
Fri Oct 16 15:14:19 CEST 2020


OK. To me, this is a problem in the recursive insertion, which is 
built-in for most native types since Scilab 6.

S.

Le 16/10/2020 à 14:55, Arvid Rosén a écrit :
>
> Hi,
>
> The minimal case I posted mimics the situation where the problem was 
> found. Removing the struct, and using just to levels of lists, does 
> not trigger the same problem. I have played around with this a bit, 
> and yet haven’t found a smaller case to trigger the issue.
>
> Cheers,
>
> Arvid
>
> *From: *Scilab Users List <users-bounces at lists.scilab.org> on behalf 
> of Stéphane Mottelet <stephane.mottelet at utc.fr>
> *Reply to: *Users mailing list for Scilab <users at lists.scilab.org>
> *Date: *Friday, 16 October 2020 at 14:20
> *To: *"users at lists.scilab.org" <users at lists.scilab.org>
> *Subject: *Re: [Scilab-users] Scilab 6 - Problem with scope and nested 
> lists
>
> Your test mix struct and lists can you reproduce it without using a 
> struct ?
>
> Le 16/10/2020 à 14:15, Arvid Rosén a écrit :
>
>     Hi,
>
>     I already filed a report here:
>
>     https://bugzilla.scilab.org/show_bug.cgi?id=16556
>     <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/bugzilla.scilab.org/show_bug.cgi?id=16556>
>
>     Do you want a more compact example than that?
>
>     Here is an even more slimmed version.
>
>
>     Cheers,
>
>     Arvid
>
>     ----------
>
>     // Define variables
>
>     testArray = list(list([]));
>
>     testArray(1)(1).testMember = 1;
>
>     testArrayOrig = testArray;
>
>     // Define function
>
>     function outArray = testFunc(inArray)
>
>         inArray(1)(1).testMember = 5
>
>         outArray = inArray;
>
>     endfunction
>
>     // Send the variable as argument to the function
>
>     testArrayOut = testFunc(testArray);
>
>     if testArrayOut(1)(1).testMember == testArray(1)(1).testMember
>
>         error("Error! inputArgument was changed by function");
>
>     end
>
>     -- 
>
>     *From: *Scilab Users List <users-bounces at lists.scilab.org>
>     <mailto:users-bounces at lists.scilab.org> on behalf of Stéphane
>     Mottelet <stephane.mottelet at utc.fr> <mailto:stephane.mottelet at utc.fr>
>     *Reply to: *Users mailing list for Scilab <users at lists.scilab.org>
>     <mailto:users at lists.scilab.org>
>     *Date: *Friday, 16 October 2020 at 13:40
>     *To: *"users at lists.scilab.org" <mailto:users at lists.scilab.org>
>     <users at lists.scilab.org> <mailto:users at lists.scilab.org>
>     *Subject: *Re: [Scilab-users] Scilab 6 - Problem with scope and
>     nested lists
>
>     Hello,
>
>     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 ?
>
>     S.
>
>     Le 16/10/2020 à 13:35, Arvid Rosén a écrit :
>
>         Hi!
>
>         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.
>
>         I have also filed a bug report here:
>         https://bugzilla.scilab.org/show_bug.cgi?id=16556
>         <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/bugzilla.scilab.org/show_bug.cgi?id=16556>
>
>         Is anyone else seeing this problem? And do you have any
>         workarounds or other suggestions?
>
>         Cheers,
>
>         Arvid
>
>         ------
>
>         // Define variables
>
>         testArray = list();
>
>         for i=1:1:10
>
>         testArray($+1) = list();
>
>             for j=1:1:10
>
>         testArray(i)($+1) = [];
>
>         testArray(i)(j).testMember = 1;
>
>             end
>
>         end
>
>         testArrayOrig = testArray;
>
>         // Define functions
>
>         function outArray = testFunc(inArray)
>
>             for i=1:1:10
>
>         for j=1:1:10
>
>         inArray(i)(j).testMember = 5
>
>         end
>
>             end
>
>         outArray = inArray;
>
>         endfunction
>
>         // Send the variable as argument to the function
>
>         if %t
>
>         testArrayOut = testFunc2(testArray);
>
>             if testArrayOut(1)(1).testMember == testArray(1)(1).testMember
>
>         error("Error! inputArgument was changed by function");
>
>             end
>
>         end
>
>
>
>
>         _______________________________________________
>
>         users mailing list
>
>         users at lists.scilab.org  <mailto:users at lists.scilab.org>
>
>         https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users  <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users>
>
>     -- 
>
>     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
>
>     http://www.utc.fr/~mottelet  <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/www.utc.fr/~mottelet>
>
>     -->
>
>
>
>     _______________________________________________
>
>     users mailing list
>
>     users at lists.scilab.org  <mailto:users at lists.scilab.org>
>
>     https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users  <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users>
>
> -- 
> 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
> http://www.utc.fr/~mottelet  <https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/www.utc.fr/~mottelet>
>
> -->
>
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users

-- 
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
http://www.utc.fr/~mottelet

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20201016/b8ddff0d/attachment.htm>


More information about the users mailing list