43 lines
2 KiB
Diff
43 lines
2 KiB
Diff
diff --git a/src/gevent/_gevent_cgreenlet.pxd b/src/gevent/_gevent_cgreenlet.pxd
|
|
index 246773e..fbc6107 100644
|
|
--- a/src/gevent/_gevent_cgreenlet.pxd
|
|
+++ b/src/gevent/_gevent_cgreenlet.pxd
|
|
@@ -16,12 +16,14 @@ cdef InvalidSwitchError
|
|
cdef extern from "greenlet/greenlet.h":
|
|
|
|
ctypedef class greenlet.greenlet [object PyGreenlet]:
|
|
- # Defining this as a void* means we can't access it as a python attribute
|
|
- # in the Python code; but we can't define it as a greenlet because that doesn't
|
|
- # properly handle the case that it can be NULL. So instead we inline a getparent
|
|
- # function that does the same thing as the green_getparent accessor but without
|
|
- # going through the overhead of generic attribute lookup.
|
|
- cdef void* parent
|
|
+ pass
|
|
+
|
|
+ # Defining this as a void* means we can't access it as a python attribute
|
|
+ # in the Python code; but we can't define it as a greenlet because that doesn't
|
|
+ # properly handle the case that it can be NULL. So instead we inline a getparent
|
|
+ # function that does the same thing as the green_getparent accessor but without
|
|
+ # going through the overhead of generic attribute lookup.
|
|
+ cdef void* PyGreenlet_GET_PARENT(greenlet s)
|
|
|
|
# These are actually macros and so must be included
|
|
# (defined) in each .pxd, as are the two functions
|
|
@@ -36,13 +38,13 @@ cdef inline greenlet getcurrent():
|
|
cdef inline object get_generic_parent(greenlet s):
|
|
# We don't use any typed functions on the return of this,
|
|
# so save the type check by making it just an object.
|
|
- if s.parent != NULL:
|
|
- return <object>s.parent
|
|
+ if PyGreenlet_GET_PARENT(s) != NULL:
|
|
+ return <object>PyGreenlet_GET_PARENT(s)
|
|
|
|
cdef inline SwitchOutGreenletWithLoop get_my_hub(greenlet s):
|
|
# Must not be called with s = None
|
|
- if s.parent != NULL:
|
|
- return <object>s.parent
|
|
+ if PyGreenlet_GET_PARENT(s) != NULL:
|
|
+ return <object>PyGreenlet_GET_PARENT(s)
|
|
|
|
cdef bint _greenlet_imported
|
|
|