File pygobject-capsule.patch of Package python-nautilus.import4337
diff --git a/src/nautilus-python.c b/src/nautilus-python.c
index d222140..69c63ee 100644
--- a/src/nautilus-python.c
+++ b/src/nautilus-python.c
@@ -48,19 +48,29 @@ np_init_pygobject(void)
PyObject *gobject = PyImport_ImportModule("gobject");
if (gobject != NULL)
{
- PyObject *mdict = PyModule_GetDict(gobject);
- PyObject *cobject = PyDict_GetItemString(mdict, "_PyGObject_API");
- if (PyCObject_Check(cobject))
- {
- _PyGObject_API = (struct _PyGObject_Functions *)PyCObject_AsVoidPtr(cobject);
- }
- else
- {
- PyErr_SetString(PyExc_RuntimeError,
- "could not find _PyGObject_API object");
- PyErr_Print();
- return FALSE;
- }
+#ifdef Py_CAPSULE_H
+ void *capsule = PyCapsule_Import("gobject._PyGObject_API", 0);
+ if (capsule)
+ {
+ _PyGObject_API = (struct _PyGObject_Functions *)capsule;
+ }
+#endif
+ if (!_PyGObject_API)
+ {
+ PyObject *mdict = PyModule_GetDict(gobject);
+ PyObject *cobject = PyDict_GetItemString(mdict, "_PyGObject_API");
+ if (PyCObject_Check(cobject))
+ {
+ _PyGObject_API = (struct _PyGObject_Functions *)PyCObject_AsVoidPtr(cobject);
+ }
+ else
+ {
+ PyErr_SetString(PyExc_RuntimeError,
+ "could not find _PyGObject_API object");
+ PyErr_Print();
+ return FALSE;
+ }
+ }
}
else
{