Spaces:
Runtime error
Runtime error
| /////////////// FetchCommonType.proto /////////////// | |
| static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); | |
| /////////////// FetchCommonType /////////////// | |
| static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { | |
| PyObject* fake_module; | |
| PyTypeObject* cached_type = NULL; | |
| fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); | |
| if (!fake_module) return NULL; | |
| Py_INCREF(fake_module); | |
| cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); | |
| if (cached_type) { | |
| if (!PyType_Check((PyObject*)cached_type)) { | |
| PyErr_Format(PyExc_TypeError, | |
| "Shared Cython type %.200s is not a type object", | |
| type->tp_name); | |
| goto bad; | |
| } | |
| if (cached_type->tp_basicsize != type->tp_basicsize) { | |
| PyErr_Format(PyExc_TypeError, | |
| "Shared Cython type %.200s has the wrong size, try recompiling", | |
| type->tp_name); | |
| goto bad; | |
| } | |
| } else { | |
| if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; | |
| PyErr_Clear(); | |
| if (PyType_Ready(type) < 0) goto bad; | |
| if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) | |
| goto bad; | |
| Py_INCREF(type); | |
| cached_type = type; | |
| } | |
| done: | |
| Py_DECREF(fake_module); | |
| // NOTE: always returns owned reference, or NULL on error | |
| return cached_type; | |
| bad: | |
| Py_XDECREF(cached_type); | |
| cached_type = NULL; | |
| goto done; | |
| } | |
| /////////////// FetchCommonPointer.proto /////////////// | |
| static void* __Pyx_FetchCommonPointer(void* pointer, const char* name); | |
| /////////////// FetchCommonPointer /////////////// | |
| static void* __Pyx_FetchCommonPointer(void* pointer, const char* name) { | |
| PyObject* fake_module = NULL; | |
| PyObject* capsule = NULL; | |
| void* value = NULL; | |
| fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); | |
| if (!fake_module) return NULL; | |
| Py_INCREF(fake_module); | |
| capsule = PyObject_GetAttrString(fake_module, name); | |
| if (!capsule) { | |
| if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; | |
| PyErr_Clear(); | |
| capsule = PyCapsule_New(pointer, name, NULL); | |
| if (!capsule) goto bad; | |
| if (PyObject_SetAttrString(fake_module, name, capsule) < 0) | |
| goto bad; | |
| } | |
| value = PyCapsule_GetPointer(capsule, name); | |
| bad: | |
| Py_XDECREF(capsule); | |
| Py_DECREF(fake_module); | |
| return value; | |
| return pointer; | |
| } | |