From: Richard W.M. Jones Date: Fri, 22 Apr 2011 21:53:07 +0000 (+0100) Subject: python: Ensure Python GIL state is correct during callback. X-Git-Tag: 1.11.4~21 X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=commitdiff_plain;h=f24494195ab8541fda7236afb37a4f897c9bcee5 python: Ensure Python GIL state is correct during callback. This updates commit 2cac52000a6a96a583af72e289a4296c596047d5. --- diff --git a/python/guestfs-py-byhand.c b/python/guestfs-py-byhand.c index af9686f..29be83b 100644 --- a/python/guestfs-py-byhand.c +++ b/python/guestfs-py-byhand.c @@ -91,6 +91,7 @@ py_guestfs_event_callback_wrapper (guestfs_h *g, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len) { + PyGILState_STATE py_save = PyGILState_UNLOCKED; PyObject *py_callback = callback; PyObject *py_array; PyObject *args; @@ -109,7 +110,14 @@ py_guestfs_event_callback_wrapper (guestfs_h *g, (unsigned PY_LONG_LONG) event, event_handle, buf, buf_len, py_array); + if (PyEval_ThreadsInitialized ()) + py_save = PyGILState_Ensure (); + py_r = PyEval_CallObject (py_callback, args); + + if (PyEval_ThreadsInitialized ()) + PyGILState_Release (py_save); + Py_DECREF (args); if (py_r != NULL)