git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
python: Fixes for Python 3 (RHBZ#750889).
[libguestfs.git]
/
python
/
guestfs-py-byhand.c
diff --git
a/python/guestfs-py-byhand.c
b/python/guestfs-py-byhand.c
index
af9686f
..
1756963
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)
@@
-160,7
+168,7
@@
py_guestfs_set_event_callback (PyObject *self, PyObject *args)
snprintf (key, sizeof key, "_python_event_%d", eh);
guestfs_set_private (g, key, py_callback);
snprintf (key, sizeof key, "_python_event_%d", eh);
guestfs_set_private (g, key, py_callback);
- py_eh = Py
Int
_FromLong ((long) eh);
+ py_eh = Py
Long
_FromLong ((long) eh);
return py_eh;
}
return py_eh;
}