[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