GoScintilla crashed unter 5.6

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: GoScintilla crashed unter 5.6

Beitrag von Kiffi »

ich bin mir da nicht ganz sicher. Die GOSCI_Free() sieht so aus:

Code: Alles auswählen

Procedure GOSCI_Free(id)
  Protected *this._GoScintilla
  If IsGadget(id) And GadgetType(id) = #PB_GadgetType_Scintilla
    *this = GetGadgetData(id)
    If *this
      ClearStructure(*this, _GoScintilla)
      FreeMemory(*this)
    EndIf
    FreeGadget(id)
  EndIf
EndProcedure
Es ist allerdings so, dass das FreeGadget(id) nochmal den Callback auslöst und dieser dann crasht, weil *this nicht mehr gültig ist.

Grüße ... Peter
Hygge
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: GoScintilla crashed unter 5.6

Beitrag von GPI »

hmm... klingt so, als würde im Callback eine Routine sitzen, die das freigeben des Gadgets bemerkt und wiederum versucht den Speicher zuzugreifen, der schon von gosci_Free() freigegeben wurde. Den Callback mal anzuschauen (Wurde ja schon öfters genannt) ist sicherlich nicht verkehrt, besonders der Teil, der auf ein #WM_Close oder ähnliches reagiert.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: GoScintilla crashed unter 5.6

Beitrag von Sicro »

Die Änderung von Kiffi löst das Problem anscheinend.
srod001 hat mit einer sehr ähnlichen Anpassung ebenfalls keine Probleme mehr:
https://github.com/tajmone/purebasic-ar ... -327764678
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: GoScintilla crashed unter 5.6

Beitrag von GPI »

Sicro hat geschrieben:Die Änderung von Kiffi löst das Problem anscheinend.
Das ist halt immer so eine Sache. Ich mag es, wenn ich weis, warum was funktioniert. Von daher wäre es für mich unerlässlich, den Callback mal anzuschauen. Weil wenn man pech hat, beseitigt man nur die Symptome, aber nicht die "Krankheit". mit dem Ergebnis, das irgenwann einen alles um die Ohren fliegt, und man nicht weis wieso.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: GoScintilla crashed unter 5.6

Beitrag von Sicro »

Das stimmt. Wenn man die Lösung anzweifelt, sollte man auf jeden Fall nochmal selber über den Code schauen, bevor man ihn in seinen eigenen Code integriert.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Antworten