diff --git a/uvloop/loop.pyx b/uvloop/loop.pyx index 431a43e..d787611 100644 --- a/uvloop/loop.pyx +++ b/uvloop/loop.pyx @@ -96,39 +96,33 @@ cdef inline run_in_context(context, method): # certain circumstances, inlined context.run() will not hold a reference to # the given method instance, which - if deallocated - will cause segfault. # See also: edgedb/edgedb#2222 + Context_Enter(context) Py_INCREF(method) try: - Context_Enter(context) - try: - return method() - finally: - Context_Exit(context) + return method() finally: Py_DECREF(method) + Context_Exit(context) cdef inline run_in_context1(context, method, arg): + Context_Enter(context) Py_INCREF(method) try: - Context_Enter(context) - try: - return method(arg) - finally: - Context_Exit(context) + return method(arg) finally: Py_DECREF(method) + Context_Exit(context) cdef inline run_in_context2(context, method, arg1, arg2): + Context_Enter(context) Py_INCREF(method) try: - Context_Enter(context) - try: - return method(arg1, arg2) - finally: - Context_Exit(context) + return method(arg1, arg2) finally: Py_DECREF(method) + Context_Exit(context) # Used for deprecation and removal of `loop.create_datagram_endpoint()`'s