Issue #20538: UTF-7 incremental decoder produced inconsistant string when

input was truncated in BASE64 section.
This commit is contained in:
Serhiy Storchaka 2014-02-08 14:06:33 +02:00
commit 6cbf151032
3 changed files with 45 additions and 9 deletions

View file

@ -4459,8 +4459,16 @@ utf7Error:
/* return state */
if (consumed) {
if (inShift) {
writer.pos = shiftOutStart; /* back off output */
*consumed = startinpos;
if (writer.pos != shiftOutStart && writer.maxchar > 127) {
PyObject *result = PyUnicode_FromKindAndData(
writer.kind, writer.data, shiftOutStart);
Py_XDECREF(errorHandler);
Py_XDECREF(exc);
_PyUnicodeWriter_Dealloc(&writer);
return result;
}
writer.pos = shiftOutStart; /* back off output */
}
else {
*consumed = s-starts;