Close 19609: narrow scope of codec exc chaining

This commit is contained in:
Nick Coghlan 2013-11-15 21:47:37 +10:00
parent 91d2c5674a
commit c4c2580d43
2 changed files with 32 additions and 15 deletions

View file

@ -370,8 +370,10 @@ PyObject *PyCodec_Encode(PyObject *object,
goto onError;
result = PyEval_CallObject(encoder, args);
if (result == NULL)
if (result == NULL) {
wrap_codec_error("encoding", encoding);
goto onError;
}
if (!PyTuple_Check(result) ||
PyTuple_GET_SIZE(result) != 2) {
@ -392,7 +394,6 @@ PyObject *PyCodec_Encode(PyObject *object,
Py_XDECREF(result);
Py_XDECREF(args);
Py_XDECREF(encoder);
wrap_codec_error("encoding", encoding);
return NULL;
}
@ -418,8 +419,10 @@ PyObject *PyCodec_Decode(PyObject *object,
goto onError;
result = PyEval_CallObject(decoder,args);
if (result == NULL)
if (result == NULL) {
wrap_codec_error("decoding", encoding);
goto onError;
}
if (!PyTuple_Check(result) ||
PyTuple_GET_SIZE(result) != 2) {
PyErr_SetString(PyExc_TypeError,
@ -439,7 +442,6 @@ PyObject *PyCodec_Decode(PyObject *object,
Py_XDECREF(args);
Py_XDECREF(decoder);
Py_XDECREF(result);
wrap_codec_error("decoding", encoding);
return NULL;
}