From f24494195ab8541fda7236afb37a4f897c9bcee5 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 22 Apr 2011 22:53:07 +0100 Subject: [PATCH] python: Ensure Python GIL state is correct during callback. This updates commit 2cac52000a6a96a583af72e289a4296c596047d5. --- python/guestfs-py-byhand.c | 8 ++++++++ 1 file changed, 8 insertions(+) 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) -- 1.8.3.1