mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-27 07:03:36 -04:00
event: Fix memory leak in debug check of task.set_owner(...)
Fixes #1328
This commit is contained in:
parent
c24a15ed40
commit
9ab460c900
@ -209,10 +209,22 @@ set_owner(PyObject *owner) {
|
|||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
if (owner != Py_None) {
|
if (owner != Py_None) {
|
||||||
PyObject *add = PyObject_GetAttrString(owner, "_addTask");
|
PyObject *add = PyObject_GetAttrString(owner, "_addTask");
|
||||||
|
PyErr_Clear();
|
||||||
PyObject *clear = PyObject_GetAttrString(owner, "_clearTask");
|
PyObject *clear = PyObject_GetAttrString(owner, "_clearTask");
|
||||||
|
PyErr_Clear();
|
||||||
|
|
||||||
if (add == nullptr || !PyCallable_Check(add) ||
|
bool valid_add = false;
|
||||||
clear == nullptr || !PyCallable_Check(clear)) {
|
if (add != nullptr) {
|
||||||
|
valid_add = PyCallable_Check(add);
|
||||||
|
Py_DECREF(add);
|
||||||
|
}
|
||||||
|
bool valid_clear = false;
|
||||||
|
if (clear != nullptr) {
|
||||||
|
valid_clear = PyCallable_Check(clear);
|
||||||
|
Py_DECREF(clear);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!valid_add || !valid_clear) {
|
||||||
Dtool_Raise_TypeError("owner object should have _addTask and _clearTask methods");
|
Dtool_Raise_TypeError("owner object should have _addTask and _clearTask methods");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user