diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2017-01-23 12:30:59 +0200 |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2017-01-23 12:30:59 +0200 |
commit | a5c896babbece4868dffd1e8e64ab88afe55b46f (patch) | |
tree | 35438398ad09a477613bc77a594c9860a32ec8ab /Modules/_ctypes/callproc.c | |
parent | c0f01d9eb22ed81c49d8c9fbfd49b6d4c4020310 (diff) | |
parent | 1bd620bca594ba9193c63e79e7836765d23047cc (diff) | |
download | cpython-a5c896babbece4868dffd1e8e64ab88afe55b46f.tar.gz |
Issue #26729: Fixed __text_signature__ for sorted().
Patch by Erik Welch.
Diffstat (limited to 'Modules/_ctypes/callproc.c')
-rw-r--r-- | Modules/_ctypes/callproc.c | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c index 7d542fb50d..9b368caf65 100644 --- a/Modules/_ctypes/callproc.c +++ b/Modules/_ctypes/callproc.c @@ -892,8 +892,7 @@ static PyObject *GetResult(PyObject *restype, void *result, PyObject *checker) return PyLong_FromLong(*(int *)result); if (restype == Py_None) { - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } dict = PyType_stgdict(restype); @@ -1263,8 +1262,7 @@ static PyObject *free_library(PyObject *self, PyObject *args) return NULL; if (!FreeLibrary((HMODULE)hMod)) return PyErr_SetFromWindowsErr(GetLastError()); - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } static const char copy_com_pointer_doc[] = @@ -1349,8 +1347,7 @@ static PyObject *py_dl_close(PyObject *self, PyObject *args) ctypes_dlerror()); return NULL; } - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } static PyObject *py_dl_sym(PyObject *self, PyObject *args) @@ -1624,32 +1621,39 @@ resize(PyObject *self, PyObject *args) obj->b_size = size; } done: - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } static PyObject * unpickle(PyObject *self, PyObject *args) { - PyObject *typ; - PyObject *state; - PyObject *result; - PyObject *tmp; + PyObject *typ, *state, *meth, *obj, *result; _Py_IDENTIFIER(__new__); _Py_IDENTIFIER(__setstate__); - if (!PyArg_ParseTuple(args, "OO", &typ, &state)) + if (!PyArg_ParseTuple(args, "OO!", &typ, &PyTuple_Type, &state)) return NULL; - result = _PyObject_CallMethodId(typ, &PyId___new__, "O", typ); - if (result == NULL) - return NULL; - tmp = _PyObject_CallMethodId(result, &PyId___setstate__, "O", state); - if (tmp == NULL) { - Py_DECREF(result); + obj = _PyObject_CallMethodIdObjArgs(typ, &PyId___new__, typ, NULL); + if (obj == NULL) return NULL; + + meth = _PyObject_GetAttrId(obj, &PyId___setstate__); + if (meth == NULL) { + goto error; } - Py_DECREF(tmp); - return result; + + result = PyObject_Call(meth, state, NULL); + Py_DECREF(meth); + if (result == NULL) { + goto error; + } + Py_DECREF(result); + + return obj; + +error: + Py_DECREF(obj); + return NULL; } static PyObject * |