Browse Source

event: Fix memory leak I just introduced in 41e4cf5

rdb 4 months ago
parent
commit
0a94971f1a
1 changed files with 2 additions and 0 deletions
  1. 2 0
      panda/src/event/asyncFuture_ext.cxx

+ 2 - 0
panda/src/event/asyncFuture_ext.cxx

@@ -172,6 +172,7 @@ static PyObject *gen_next(PyObject *self) {
       // exception directly.
       // exception directly.
 #if PY_VERSION_HEX >= 0x030C0000 // 3.12
 #if PY_VERSION_HEX >= 0x030C0000 // 3.12
       PyObject *exc = PyObject_CallOneArg(PyExc_StopIteration, result);
       PyObject *exc = PyObject_CallOneArg(PyExc_StopIteration, result);
+      Py_DECREF(result);
       if (LIKELY(exc != nullptr)) {
       if (LIKELY(exc != nullptr)) {
         // This function steals a reference to exc.
         // This function steals a reference to exc.
         PyErr_SetRaisedException(exc);
         PyErr_SetRaisedException(exc);
@@ -179,6 +180,7 @@ static PyObject *gen_next(PyObject *self) {
 #else
 #else
       if (PyTuple_Check(result)) {
       if (PyTuple_Check(result)) {
         PyObject *exc = PyObject_CallOneArg(PyExc_StopIteration, result);
         PyObject *exc = PyObject_CallOneArg(PyExc_StopIteration, result);
+        Py_DECREF(result);
         if (LIKELY(exc != nullptr)) {
         if (LIKELY(exc != nullptr)) {
           PyErr_SetObject(PyExc_StopIteration, exc);
           PyErr_SetObject(PyExc_StopIteration, exc);
           Py_DECREF(exc);
           Py_DECREF(exc);