[Gambas-user] Nasty bug in "With" instruction!
Jussi Lahtinen
jussi.lahtinen at ...626...
Sat Apr 18 15:22:50 CEST 2009
Some more testing...
With this code:
With tmp
.y = 0
tmp = funcx()
With tmp ' Extra with instruction.
Debug .y
Debug tmp.y
End With
End With
Or with this:
With tmp
.y = 0
funcx2(tmp) ' By reference (unfortunately this solution doesn't fit
to my code).
Debug .y
Debug tmp.y
End With
Public Sub funcx2(test as Class1)
test.y = 1
End
Result is what is expected!
I tried to look at the gambas source code to figure out what is
wrong... beats me up.
But maybe the problem is in how archiver or interpreter handles "tmp = ...".
Extra "with" instruction is workaround, but it's little troublesome to
find where it is needed.
And when "tmp = funcx()" is in "if then else" structure, it is very troublesome!
Maybe I need temporarily to get rid of "with" instructions!
But I hope it is easy to fix!
Regards,
Jussi
On Thu, Apr 16, 2009 at 16:17, Jussi Lahtinen <jussi.lahtinen at ...626...> wrote:
> Hi!
> Confirmed on Gambas2 and Gambas3.
>
> Code:
>
> Dim tmp As New Class1
>
> With tmp
> .y = 0
> tmp = funcx()
> Debug .y
> Debug tmp.y
> End With
>
>
> Public Function funcx() As Class1
> Dim test As New Class1
>
> test.y = 1
>
> Return test
> End
>
>
> Output of debug is;
> 0
> 1
>
> I think .y and tmp.y should be same!
>
> Regards,
> Jussi
>
More information about the User
mailing list