[Python-checkins] cpython: Issue #28504: Cleanup unicode_decode_call_errorhandler_wchar/writer.

serhiy.storchaka python-checkins at python.org
Sat Oct 22 16:18:50 EDT 2016


https://hg.python.org/cpython/rev/204a43c452cc
changeset: 104648:204a43c452cc
user: Serhiy Storchaka <storchaka at gmail.com>
date: Sat Oct 22 23:18:31 2016 +0300
summary:
 Issue #28504: Cleanup unicode_decode_call_errorhandler_wchar/writer.
Patch by Xiang Zhang.
files:
 Objects/unicodeobject.c | 24 ++++++++----------------
 1 files changed, 8 insertions(+), 16 deletions(-)
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -4240,7 +4240,7 @@
 Py_ssize_t *endinpos, PyObject **exceptionObject, const char **inptr,
 PyObject **output, Py_ssize_t *outpos)
 {
- static const char *argparse = "O!n;decoding error handler must return (str, int) tuple";
+ static const char *argparse = "Un;decoding error handler must return (str, int) tuple";
 
 PyObject *restuple = NULL;
 PyObject *repunicode = NULL;
@@ -4273,10 +4273,10 @@
 if (restuple == NULL)
 goto onError;
 if (!PyTuple_Check(restuple)) {
- PyErr_SetString(PyExc_TypeError, &argparse[4]);
+ PyErr_SetString(PyExc_TypeError, &argparse[3]);
 goto onError;
 }
- if (!PyArg_ParseTuple(restuple, argparse, &PyUnicode_Type, &repunicode, &newpos))
+ if (!PyArg_ParseTuple(restuple, argparse, &repunicode, &newpos))
 goto onError;
 
 /* Copy back the bytes variables, which might have been modified by the
@@ -4284,9 +4284,6 @@
 inputobj = PyUnicodeDecodeError_GetObject(*exceptionObject);
 if (!inputobj)
 goto onError;
- if (!PyBytes_Check(inputobj)) {
- PyErr_Format(PyExc_TypeError, "exception attribute object must be bytes");
- }
 *input = PyBytes_AS_STRING(inputobj);
 insize = PyBytes_GET_SIZE(inputobj);
 *inend = *input + insize;
@@ -4327,7 +4324,7 @@
 *inptr = *input + newpos;
 
 /* we made it! */
- Py_XDECREF(restuple);
+ Py_DECREF(restuple);
 return 0;
 
 overflow:
@@ -4348,7 +4345,7 @@
 Py_ssize_t *endinpos, PyObject **exceptionObject, const char **inptr,
 _PyUnicodeWriter *writer /* PyObject **output, Py_ssize_t *outpos */)
 {
- static const char *argparse = "O!n;decoding error handler must return (str, int) tuple";
+ static const char *argparse = "Un;decoding error handler must return (str, int) tuple";
 
 PyObject *restuple = NULL;
 PyObject *repunicode = NULL;
@@ -4375,10 +4372,10 @@
 if (restuple == NULL)
 goto onError;
 if (!PyTuple_Check(restuple)) {
- PyErr_SetString(PyExc_TypeError, &argparse[4]);
+ PyErr_SetString(PyExc_TypeError, &argparse[3]);
 goto onError;
 }
- if (!PyArg_ParseTuple(restuple, argparse, &PyUnicode_Type, &repunicode, &newpos))
+ if (!PyArg_ParseTuple(restuple, argparse, &repunicode, &newpos))
 goto onError;
 
 /* Copy back the bytes variables, which might have been modified by the
@@ -4386,9 +4383,6 @@
 inputobj = PyUnicodeDecodeError_GetObject(*exceptionObject);
 if (!inputobj)
 goto onError;
- if (!PyBytes_Check(inputobj)) {
- PyErr_Format(PyExc_TypeError, "exception attribute object must be bytes");
- }
 *input = PyBytes_AS_STRING(inputobj);
 insize = PyBytes_GET_SIZE(inputobj);
 *inend = *input + insize;
@@ -4403,8 +4397,6 @@
 goto onError;
 }
 
- if (PyUnicode_READY(repunicode) < 0)
- goto onError;
 replen = PyUnicode_GET_LENGTH(repunicode);
 if (replen > 1) {
 writer->min_length += replen - 1;
@@ -4420,7 +4412,7 @@
 *inptr = *input + newpos;
 
 /* we made it! */
- Py_XDECREF(restuple);
+ Py_DECREF(restuple);
 return 0;
 
 onError:
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /