git.annexia.org
/
libguestfs.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
dfd7efb
)
python: Ensure Python GIL state is correct during callback.
author
Richard W.M. Jones
<rjones@redhat.com>
Fri, 22 Apr 2011 21:53:07 +0000
(22:53 +0100)
committer
Richard W.M. Jones
<rjones@redhat.com>
Fri, 22 Apr 2011 21:53:07 +0000
(22:53 +0100)
This updates commit
2cac52000a6a96a583af72e289a4296c596047d5
.
python/guestfs-py-byhand.c
patch
|
blob
|
history
diff --git
a/python/guestfs-py-byhand.c
b/python/guestfs-py-byhand.c
index
af9686f
..
29be83b
100644
(file)
--- 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)
{
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;
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);
(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);
py_r = PyEval_CallObject (py_callback, args);
+
+ if (PyEval_ThreadsInitialized ())
+ PyGILState_Release (py_save);
+
Py_DECREF (args);
if (py_r != NULL)
Py_DECREF (args);
if (py_r != NULL)