function arg[0] table copied to temptable problem.
Posted: Wed Aug 25, 2010 1:15 am
I first thought i was hunting a bug, but after 2 hours of bug hunting, im not sure anymore i am fighting agaisnt a bug, it might be that i just dont know how hollywood works in this case.
Code goes about like this:
Function (...)
if arg.n > 0 then at.temptable=arg[0]
stuff happpening to at.temptable...
EndFunction
Idea is that Function either receives no args, or it will receive Table as its Arg[0].
if this table is sent, then arg[0] is copied to at.temptable.
Then during the program Function is being called mostly without Table on arg[0] and at.temptable is being modified during function calls.
Overall the idea is, that i would have that original Table safe in its original state. And whenever I am needing it, i would copy it to that at.temptable using arg[0] method.
Then when that at.temptable is being modified during the program, i can always call that function again with that table as arg[0] and get the original version back to use.
To my understanding Hollywood normally works like this:
Table1 = table2
-modify table1-
Table1 = table2
And the end result is that Table1 is exact copy of Table2
However, in my program when using arg[0], it seems instead of resulting in Table1 being table2 it results in it being Modified Table2 (through modifying table1)
So how does it go with that Arg[0] thing.
If i:
Function(Table2)
table1 = arg[0]
Then should it COPY table2 to table1?
or does it maybe send REFERENCE of table2 to table1? (Which would result in that what ever i do to table1, would also affect original table2?)
For that is only explanation i can currently find for the odd behavior of my program.
And if it indeed is sending reference. Then how can i copy Table2s info to table1 thorugh arg so that when i modify table1, it wouldnt modify table2?
Code goes about like this:
Function (...)
if arg.n > 0 then at.temptable=arg[0]
stuff happpening to at.temptable...
EndFunction
Idea is that Function either receives no args, or it will receive Table as its Arg[0].
if this table is sent, then arg[0] is copied to at.temptable.
Then during the program Function is being called mostly without Table on arg[0] and at.temptable is being modified during function calls.
Overall the idea is, that i would have that original Table safe in its original state. And whenever I am needing it, i would copy it to that at.temptable using arg[0] method.
Then when that at.temptable is being modified during the program, i can always call that function again with that table as arg[0] and get the original version back to use.
To my understanding Hollywood normally works like this:
Table1 = table2
-modify table1-
Table1 = table2
And the end result is that Table1 is exact copy of Table2
However, in my program when using arg[0], it seems instead of resulting in Table1 being table2 it results in it being Modified Table2 (through modifying table1)
So how does it go with that Arg[0] thing.
If i:
Function(Table2)
table1 = arg[0]
Then should it COPY table2 to table1?
or does it maybe send REFERENCE of table2 to table1? (Which would result in that what ever i do to table1, would also affect original table2?)
For that is only explanation i can currently find for the odd behavior of my program.
And if it indeed is sending reference. Then how can i copy Table2s info to table1 thorugh arg so that when i modify table1, it wouldnt modify table2?