From 24cb7de15d3a5979425b281ab4f600f7c2b401f2 Mon Sep 17 00:00:00 2001 From: Yury Selivanov Date: Thu, 27 Sep 2018 15:33:23 -0400 Subject: [PATCH] [3.7] bpo-34762: Update PyContext* refs to PyObject* in asyncio and decimal (GH-9610) --- Modules/_asynciomodule.c | 17 ++++++++--------- Modules/_decimal/_decimal.c | 6 +++--- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c index ebda10404eb5..0c161fb2bc7d 100644 --- a/Modules/_asynciomodule.c +++ b/Modules/_asynciomodule.c @@ -59,7 +59,7 @@ typedef enum { PyObject_HEAD \ PyObject *prefix##_loop; \ PyObject *prefix##_callback0; \ - PyContext *prefix##_context0; \ + PyObject *prefix##_context0; \ PyObject *prefix##_callbacks; \ PyObject *prefix##_exception; \ PyObject *prefix##_result; \ @@ -78,7 +78,7 @@ typedef struct { FutureObj_HEAD(task) PyObject *task_fut_waiter; PyObject *task_coro; - PyContext *task_context; + PyObject *task_context; int task_must_cancel; int task_log_destroy_pending; } TaskObj; @@ -337,7 +337,7 @@ get_event_loop(void) static int -call_soon(PyObject *loop, PyObject *func, PyObject *arg, PyContext *ctx) +call_soon(PyObject *loop, PyObject *func, PyObject *arg, PyObject *ctx) { PyObject *handle; PyObject *stack[3]; @@ -448,7 +448,7 @@ future_schedule_callbacks(FutureObj *fut) PyObject *cb = PyTuple_GET_ITEM(cb_tup, 0); PyObject *ctx = PyTuple_GET_ITEM(cb_tup, 1); - if (call_soon(fut->fut_loop, cb, (PyObject *)fut, (PyContext *)ctx)) { + if (call_soon(fut->fut_loop, cb, (PyObject *)fut, ctx)) { /* If an error occurs in pure-Python implementation, all callbacks are cleared. */ Py_CLEAR(fut->fut_callbacks); @@ -616,7 +616,7 @@ future_get_result(FutureObj *fut, PyObject **result) } static PyObject * -future_add_done_callback(FutureObj *fut, PyObject *arg, PyContext *ctx) +future_add_done_callback(FutureObj *fut, PyObject *arg, PyObject *ctx) { if (!future_is_alive(fut)) { PyErr_SetString(PyExc_RuntimeError, "uninitialized Future object"); @@ -903,16 +903,15 @@ _asyncio_Future_add_done_callback_impl(FutureObj *self, PyObject *fn, /*[clinic end generated code: output=7ce635bbc9554c1e input=15ab0693a96e9533]*/ { if (context == NULL) { - context = (PyObject *)PyContext_CopyCurrent(); + context = PyContext_CopyCurrent(); if (context == NULL) { return NULL; } - PyObject *res = future_add_done_callback( - self, fn, (PyContext *)context); + PyObject *res = future_add_done_callback(self, fn, context); Py_DECREF(context); return res; } - return future_add_done_callback(self, fn, (PyContext *)context); + return future_add_done_callback(self, fn, context); } /*[clinic input] diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c index 5bce780cb7fb..1e58d3d5b779 100644 --- a/Modules/_decimal/_decimal.c +++ b/Modules/_decimal/_decimal.c @@ -122,7 +122,7 @@ incr_false(void) } -static PyContextVar *current_context_var; +static PyObject *current_context_var; /* Template for creating new thread contexts, calling Context() without * arguments and initializing the module_context on first access. */ @@ -1500,7 +1500,7 @@ init_current_context(void) } CTX(tl_context)->status = 0; - PyContextToken *tok = PyContextVar_Set(current_context_var, tl_context); + PyObject *tok = PyContextVar_Set(current_context_var, tl_context); if (tok == NULL) { Py_DECREF(tl_context); return NULL; @@ -1561,7 +1561,7 @@ PyDec_SetCurrentContext(PyObject *self UNUSED, PyObject *v) Py_INCREF(v); } - PyContextToken *tok = PyContextVar_Set(current_context_var, v); + PyObject *tok = PyContextVar_Set(current_context_var, v); Py_DECREF(v); if (tok == NULL) { return NULL; -- 2.47.3