BUG: XOr-Operation zerstört Werte von Protected-Variablen !
Verfasst: 14.05.2007 16:16
[Edit:] Titel und Text geändert, da der Bug nicht nur (wie zuvor angenommen) auf Static-Variablen beschränkt ist.
Moin, moin, ...
wenn man in einer Prozedur den XOR-Operator anwendet, so werden die Werte der Protected-Variablen zerstört:
Gruß, PL.
[Nachtrag:]
Habe gerade festgestellt, dass dies nicht nur bei XOr-Operationen mit Static-Variablen der Fall ist (siehe Codebeispiel), sondern generell bei XOr-Operationen innerhalb einer Prozedur.
Also auch bei XOr-Operationen mit Globalen- und Protected-Variablen.
Ist also ein genereller Bug beim XOR-Operator !!!
Moin, moin, ...
wenn man in einer Prozedur den XOR-Operator anwendet, so werden die Werte der Protected-Variablen zerstört:
Code: Alles auswählen
Procedure StaticBug()
Protected a = 11
Protected b = 22
Protected c = 33
Protected d = 44
Static z = #False
Debug "VOR Änderung der Static-Variable:"
Debug "a = "+Str(a)
Debug "b = "+Str(b)
Debug "c = "+Str(c)
Debug "d = "+Str(d)
Debug "z = "+Str(z)
z = 1 XOr z
Debug ""
Debug "NACH XOr-Operation mit Static-Variable:"
Debug "a = "+Str(a)+" < 'a' hat nun den Wert von 'b'"
Debug "b = "+Str(b)+" < 'b' hat nun den Wert von 'c'"
Debug "c = "+Str(c)+" < 'c' hat nun den Wert von 'd'"
Debug "d = "+Str(d)+" < komplett falscher Wert"
Debug "z = "+Str(z)
EndProcedure
StaticBug()
Da die Protected-Variablen ja auf einem Stack gespeichert werden, ist es vermutlich ein Stack-Fehler beim XOR-Operator.Debug-Ausgabe: hat geschrieben:VOR Änderung der Static-Variable:
a = 11
b = 22
c = 33
d = 44
z = 0
NACH XOr-Operation mit Static-Variable:
a = 22 < 'a' hat nun den Wert von 'b'
b = 33 < 'b' hat nun den Wert von 'c'
c = 44 < 'c' hat nun den Wert von 'd'
d = 4198507 < komplett falscher Wert
z = 1
Gruß, PL.
[Nachtrag:]
Habe gerade festgestellt, dass dies nicht nur bei XOr-Operationen mit Static-Variablen der Fall ist (siehe Codebeispiel), sondern generell bei XOr-Operationen innerhalb einer Prozedur.
Also auch bei XOr-Operationen mit Globalen- und Protected-Variablen.
Ist also ein genereller Bug beim XOR-Operator !!!