Commit 1dffb120 authored by Marc-André Lemburg's avatar Marc-André Lemburg

.encode()/.decode() patch part 2.

parent d2d4598e
...@@ -2678,6 +2678,8 @@ string_encode(PyStringObject *self, PyObject *args) ...@@ -2678,6 +2678,8 @@ string_encode(PyStringObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "|ss:encode", &encoding, &errors)) if (!PyArg_ParseTuple(args, "|ss:encode", &encoding, &errors))
return NULL; return NULL;
v = PyString_AsEncodedObject((PyObject *)self, encoding, errors); v = PyString_AsEncodedObject((PyObject *)self, encoding, errors);
if (v == NULL)
goto onError;
if (!PyString_Check(v) && !PyUnicode_Check(v)) { if (!PyString_Check(v) && !PyUnicode_Check(v)) {
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"encoder did not return a string/unicode object " "encoder did not return a string/unicode object "
...@@ -2687,6 +2689,9 @@ string_encode(PyStringObject *self, PyObject *args) ...@@ -2687,6 +2689,9 @@ string_encode(PyStringObject *self, PyObject *args)
return NULL; return NULL;
} }
return v; return v;
onError:
return NULL;
} }
...@@ -2710,6 +2715,8 @@ string_decode(PyStringObject *self, PyObject *args) ...@@ -2710,6 +2715,8 @@ string_decode(PyStringObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "|ss:decode", &encoding, &errors)) if (!PyArg_ParseTuple(args, "|ss:decode", &encoding, &errors))
return NULL; return NULL;
v = PyString_AsDecodedObject((PyObject *)self, encoding, errors); v = PyString_AsDecodedObject((PyObject *)self, encoding, errors);
if (v == NULL)
goto onError;
if (!PyString_Check(v) && !PyUnicode_Check(v)) { if (!PyString_Check(v) && !PyUnicode_Check(v)) {
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"decoder did not return a string/unicode object " "decoder did not return a string/unicode object "
...@@ -2719,6 +2726,9 @@ string_decode(PyStringObject *self, PyObject *args) ...@@ -2719,6 +2726,9 @@ string_decode(PyStringObject *self, PyObject *args)
return NULL; return NULL;
} }
return v; return v;
onError:
return NULL;
} }
......
...@@ -4935,6 +4935,8 @@ unicode_encode(PyUnicodeObject *self, PyObject *args) ...@@ -4935,6 +4935,8 @@ unicode_encode(PyUnicodeObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "|ss:encode", &encoding, &errors)) if (!PyArg_ParseTuple(args, "|ss:encode", &encoding, &errors))
return NULL; return NULL;
v = PyUnicode_AsEncodedObject((PyObject *)self, encoding, errors); v = PyUnicode_AsEncodedObject((PyObject *)self, encoding, errors);
if (v == NULL)
goto onError;
if (!PyString_Check(v) && !PyUnicode_Check(v)) { if (!PyString_Check(v) && !PyUnicode_Check(v)) {
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"encoder did not return a string/unicode object " "encoder did not return a string/unicode object "
...@@ -4944,6 +4946,9 @@ unicode_encode(PyUnicodeObject *self, PyObject *args) ...@@ -4944,6 +4946,9 @@ unicode_encode(PyUnicodeObject *self, PyObject *args)
return NULL; return NULL;
} }
return v; return v;
onError:
return NULL;
} }
PyDoc_STRVAR(decode__doc__, PyDoc_STRVAR(decode__doc__,
...@@ -4966,6 +4971,8 @@ unicode_decode(PyStringObject *self, PyObject *args) ...@@ -4966,6 +4971,8 @@ unicode_decode(PyStringObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "|ss:decode", &encoding, &errors)) if (!PyArg_ParseTuple(args, "|ss:decode", &encoding, &errors))
return NULL; return NULL;
v = PyUnicode_AsDecodedObject((PyObject *)self, encoding, errors); v = PyUnicode_AsDecodedObject((PyObject *)self, encoding, errors);
if (v == NULL)
goto onError;
if (!PyString_Check(v) && !PyUnicode_Check(v)) { if (!PyString_Check(v) && !PyUnicode_Check(v)) {
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"decoder did not return a string/unicode object " "decoder did not return a string/unicode object "
...@@ -4975,6 +4982,9 @@ unicode_decode(PyStringObject *self, PyObject *args) ...@@ -4975,6 +4982,9 @@ unicode_decode(PyStringObject *self, PyObject *args)
return NULL; return NULL;
} }
return v; return v;
onError:
return NULL;
} }
PyDoc_STRVAR(expandtabs__doc__, PyDoc_STRVAR(expandtabs__doc__,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment