#0 line: if (--op->ob_refcnt == 0) { context: #if defined(Py_REF_DEBUG) && defined(Py_LIMITED_API) && Py_LIMITED_API+0 >= 0x030A0000 // Stable ABI for limited C API version 3.10 of Python debug build static inline void Py_DECREF(PyObject *op) { _Py_DecRef(op); } #define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op)) #elif defined(Py_REF_DEBUG) static inline void Py_DECREF(const char *filename, int lineno, PyObject *op) { _Py_RefTotal--; if (--op->ob_refcnt != 0) { if (op->ob_refcnt < 0) { _Py_NegativeRefcount(filename, lineno, op); } } else { _Py_Dealloc(op); } } #define Py_DECREF(op) Py_DECREF(__FILE__, __LINE__, _PyObject_CAST(op)) #else static inline void Py_DECREF(PyObject *op) { // Non-limited C API and limited C API for Python 3.9 and older access // directly PyObject.ob_refcnt. if (--op->ob_refcnt == 0) { _Py_Dealloc(op); } } #define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op)) #endif file: /home/sergio/work/Linked_crystal_monorepo/packages/app/APKbuilder/.buildozer/android/platform/build-arm64-v8a/build/other_builds/python3/arm64-v8a__ndk_target_21/python3/Include/object.h: #1 line: __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; context: /* "pyboy/core/lcd.py":673 * sprite_cache_no = 1 * * self.update_spritecache(sprite_cache_no, lcd, tileindex, sprite_cache_no if self.cgb else 0) # <<<<<<<<<<<<<< * if lcd._LCDC.sprite_height: * self.update_spritecache(sprite_cache_no, lcd, tileindex + 1, sprite_cache_no if self.cgb else 0) */ if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "update_spritecache"); __PYX_ERR(0, 673, __pyx_L1_error) } if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "cgb"); __PYX_ERR(0, 673, __pyx_L1_error) } if ((__pyx_v_self->cgb != 0)) { __pyx_t_13 = ((PyObject *)__pyx_v_sprite_cache_no); } else { __pyx_t_13 = ((PyObject *)0); } ((struct __pyx_vtabstruct_5pyboy_4core_3lcd_Renderer *)__pyx_v_self->__pyx_vtab)->update_spritecache(__pyx_v_self, __pyx_v_sprite_cache_no, __pyx_v_lcd, __pyx_v_tileindex, ((int)__pyx_t_13)); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; #2 (only 1 line) /* "pyboy/core/lcd.py":207 * * self.renderer.scanline(self, self.LY) * self.renderer.scanline_sprites( # <<<<<<<<<<<<<< * self, self.LY, self.renderer._screenbuffer, self.renderer._screenbuffer_attributes, False * ) */ ((struct __pyx_vtabstruct_5pyboy_4core_3lcd_Renderer *)__pyx_v_self->renderer->__pyx_vtab)->scanline_sprites(__pyx_v_self->renderer, __pyx_v_self, __pyx_v_self->LY, __pyx_v_self->renderer->_screenbuffer, __pyx_v_self->renderer->_screenbuffer_attributes, 0); #3 line: __pyx_v_lcd_interrupt = ((struct __pyx_vtabstruct_5pyboy_4core_3lcd_LCD *)__pyx_v_self->lcd->__pyx_vtab)->tick(__pyx_v_self->lcd, __pyx_v_self->cpu->cycles); context: /* "pyboy/core/mb.py":352 * self.cpu.set_interruptflag(INTR_TIMER) * * lcd_interrupt = self.lcd.tick(self.cpu.cycles) # <<<<<<<<<<<<<< * if lcd_interrupt: * self.cpu.set_interruptflag(lcd_interrupt) */ if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "lcd"); __PYX_ERR(0, 352, __pyx_L1_error) } if (unlikely(((PyObject *)__pyx_v_self->lcd) == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "tick"); __PYX_ERR(0, 352, __pyx_L1_error) } if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "cpu"); __PYX_ERR(0, 352, __pyx_L1_error) } if (unlikely(((PyObject *)__pyx_v_self->cpu) == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "cycles"); __PYX_ERR(0, 352, __pyx_L1_error) } __pyx_v_lcd_interrupt = ((struct __pyx_vtabstruct_5pyboy_4core_3lcd_LCD *)__pyx_v_self->lcd->__pyx_vtab)->tick(__pyx_v_self->lcd, __pyx_v_self->cpu->cycles);