Typecastingproblem von Quad bei statischen Arrays (x86)

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Typecastingproblem von Quad bei statischen Arrays (x86)

Beitrag von cxAlex »

Ich schätze mal das das hier ein TypeCasting Problem vorliegt:

Code: Alles auswählen

Structure TestHolder
  tStatic.a[32]  
EndStructure

Macro NewHolder()
  AllocateMemory(SizeOf(TestHolder))  
EndMacro



Procedure GetHolder1(*Holder.TestHolder, Index.q)
  Protected Level.l = Index%33
  Debug "Level: "+Str(Level)
  ProcedureReturn *Holder\tStatic[Level]
EndProcedure

Procedure GetHolder2(*Holder.TestHolder, Index.i)
  Debug "Level: "+Str(Index%33)
  ProcedureReturn *Holder\tStatic[Index%33]
EndProcedure

Procedure GetHolder3(*Holder.TestHolder, Index.q)
  Debug "Level: "+Str(Index%33)
  ProcedureReturn *Holder\tStatic[Index%33] ; <- Hier passier der Fehler
EndProcedure

tH = NewHolder()

Debug GetHolder1(tH, 2)
Debug GetHolder2(tH, 2)
Debug GetHolder3(tH, 2)
Wenn das Modulo nicht über eine Long - Variable zwischengespeichert wird kommt ein "Index des Struktur-Arrays außerhalb des zulässigen Bereichs." - Fehler. Der Index ist korrekterweise aber 2, also innerhalb des Bereichs. Der Fehler tritt nur unter x86 auf.

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Typecastingproblem von Quad bei statischen Arrays (x86)

Beitrag von STARGÅTE »

Bug kann ich bestätigen.

Unabhängig davon, frage ich mich aber wieso du Index % 32 benutzt.

Statische Arrays welche als Name[Fields] definiert werden haben genau 'Fields' Felder, also von 0,1,...,Fields-1 !!

*Holder\tStatic[32] gibt es also nicht !

Es wäre also logischer wenn du Index % 32 benutzt ... um immer im Intervall [0,31] zu bleiben.

PS: Dim Name(Fields) hätte 'Fields+1' Felder und würde von 0 bis Fields gehen !

Edit:

Alles klar, wollte trotzdem nur mal drauf hinweisen :wink:
Zuletzt geändert von STARGÅTE am 22.09.2010 15:23, insgesamt 2-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Re: Typecastingproblem von Quad bei statischen Arrays (x86)

Beitrag von cxAlex »

Das Modulo war nur ein Beispiel, ich hab einfach schnell einen Democode stricken wollen der den Bug aufzeigt. Das 33 ist bedeutungslos.
In der Form verwende ich den Code gar nicht.

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Antworten