mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
python: fix call of Python handlers of events
Make sure to reference the arguments, to make sure they are kept alive during the function call; this is visible when setting an event handler for the CLOSE event, and testing it with Python 3. This does not seem to create a memory leak e.g. with Python 2. Also, switch away from the quasi-internal PyEval_CallObject to the public PyObject_CallObject, which takes care of doing safety checks.
This commit is contained in:
@@ -136,11 +136,12 @@ guestfs_int_py_event_callback_wrapper (guestfs_h *g,
|
||||
args = Py_BuildValue ("(Kis#O)",
|
||||
(unsigned PY_LONG_LONG) event, event_handle,
|
||||
buf, buf_len, py_array);
|
||||
Py_INCREF (args);
|
||||
|
||||
if (PyEval_ThreadsInitialized ())
|
||||
py_save = PyGILState_Ensure ();
|
||||
|
||||
py_r = PyEval_CallObject (py_callback, args);
|
||||
py_r = PyObject_CallObject (py_callback, args);
|
||||
|
||||
if (PyEval_ThreadsInitialized ())
|
||||
PyGILState_Release (py_save);
|
||||
|
||||
Reference in New Issue
Block a user