02.01.2016, 01:30
Blackbird schrieb:@ThiloWeil Amiblitz3 keine Referenzübergabe unterstützt. Das müsste man recht hässlich so lösen:
Funktioniert ntui_FreeEngine{} nicht richtig oder warum bleibt nach dem Aufruf von ntui_FreeEngine{*testEngine}
der Pointer *testEngine mit der Adresse gefüllt und wird nicht auf Null gesetzt ?
[ab3]Statement ntuiFree{*enginePtr.b}
*engine.tuiEngine = Peek.l(*enginePtr)
...
Poke.l *enginePtr, Null
End Statement
...
ntui_Free{&*testEngine}[/ab3]
Das ist aber nicht mehr Typensicher und wenn man den & vergisst wird es ungemütlich.
Zitat:Deshalb reapert NtuiCreator bei der Abfrage der *testEngine im Mainloop beim Notify !Der muss direkt nach dem Free genullt werden, ja.
Zitat:Aufgerufen wird ntui_FreeEngine{} bei creator_HideWindow{}, also sollte doch alles i.O sein beim nächsten loopDas ist kein Workaround. Auf AmigaOS in C oder Amiblitz gibt es nie Free funktionen die dir den Pointer Nullen, auch nicht FreeMem().
Als Workaround habe ich nun die *testEngine selbst genullt, damit ist dann auch der Reaper weg
Für solche Sachen bräuchten wir modernere Sprachen wie C14++.