diff --git a/CHANGES b/CHANGES index e8cdfd2ca..36e868864 100644 --- a/CHANGES +++ b/CHANGES @@ -17,6 +17,7 @@ Bugfixes: - Qt: Fix color picking in sprite view (fixes mgba.io/i/1307) - GB: Fix crash when accessing SRAM if no save loaded and cartridge has no SRAM - Python: Fix crash when deleting files owned by library + - Python: Make sure GB link object isn't GC'd before GB object Misc: - GBA Savedata: EEPROM performance fixes - GBA Savedata: Automatically map 1Mbit Flash files as 1Mbit Flash diff --git a/src/platform/python/mgba/gb.py b/src/platform/python/mgba/gb.py index f4d6987c4..4e08faf39 100644 --- a/src/platform/python/mgba/gb.py +++ b/src/platform/python/mgba/gb.py @@ -27,6 +27,7 @@ class GB(Core): self.sprites = GBObjs(self) self.cpu = LR35902Core(self._core.cpu) self.memory = None + self._link = None @needs_reset def _init_cache(self, cache): @@ -43,10 +44,13 @@ class GB(Core): self.memory = GBMemory(self._core) def attach_sio(self, link): + self._link = link lib.GBSIOSetDriver(ffi.addressof(self._native.sio), link._native) def __del__(self): - lib.GBSIOSetDriver(ffi.addressof(self._native.sio), ffi.NULL) + if self._link: + lib.GBSIOSetDriver(ffi.addressof(self._native.sio), ffi.NULL) + self._link = None create_callback("GBSIOPythonDriver", "init")