Seite 1 von 1

[4.20B2] FreeGadget [Bug] [ ]

Verfasst: 16.02.2008 20:45
von RSBasic
Hallo,

mir ist was bei FreeGadget aufgefallen, was sehr eigenartig ist.
Okey, ich kann es ignorieren, aber es geht um Prinzip.
Folgendes Beispiel:

Code: Alles auswählen

If OpenWindow(0,0,0,500,500,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(0))
  EndIf
  For a=1 To 50
    FreeGadget(a)
  Next
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Bei GadgetID 0-49 sagt er garnix, dass kein Gadget initialisiert wurde, aber ab GadgetID 50+ meckert der Debugger :?
Wieso davor nicht?

Verfasst: 16.02.2008 20:49
von edel
Ist jetzt nicht dein ernst, oder?

Verfasst: 16.02.2008 20:50
von PMTheQuick
edel hat geschrieben:Ist jetzt nicht dein ernst, oder?
Nach nem Gesprächchen in Dingelings Chat würde ich jetzt mal sagen, es ist sein Ernst :D (Er hat mirs auch schon gesagt :D )

Gruss
PMTheQuick ;)

Verfasst: 16.02.2008 20:57
von RSBasic
edel hat geschrieben:Ist jetzt nicht dein ernst, oder?
:?

Verfasst: 16.02.2008 21:13
von edel
Wenn die interne GadgetListe erstellt wird, wird gleich fuer 50 Gadgets
Platz geschaffen. Kommt man ueber 50 werden es 100 usw...
Baut man nun ein Freegadget(0) ein, greift die interne Funktion
auf den Speicher zu (der allerdings leer ist und die Funktion bricht
selber ab). Setzt man aber nun statt der 0 eine 50 ein, ohne dafuer
ueberhaupt ein Gadget erstellt zu haben, greift die Funktion auf
einen Speicher zu, der nicht alloziert wurde und schmiert somit ab.

Da der Code oben aber Bloedsinn ist, hat das hier ja eigentlich nichts
zu suchen.

Verfasst: 16.02.2008 21:19
von RSBasic
edel hat geschrieben:Wenn die interne GadgetListe erstellt wird, wird gleich fuer 50 Gadgets Platz geschaffen. Kommt man ueber 50 werden es 100 usw... Baut man nun ein Freegadget(0) ein, greift die interne Funktion auf den Speicher zu (der allerdings leer ist und die Funktion bricht selber ab). Setzt man aber nun statt der 0 eine 50 ein, ohne dafuer ueberhaupt ein Gadget erstellt zu haben, greift die Funktion auf einen Speicher zu, der nicht alloziert wurde und schmiert somit ab.
Das habe ich nicht gewusst.

\\Edit
Trotzdem sollte der Debugger auch die interne Funktionen kontrollieren oder?