diff options
Diffstat (limited to 'Objects/stringlib/codecs.h')
-rw-r--r-- | Objects/stringlib/codecs.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/Objects/stringlib/codecs.h b/Objects/stringlib/codecs.h index d7a9918..ae99d1a 100644 --- a/Objects/stringlib/codecs.h +++ b/Objects/stringlib/codecs.h @@ -334,7 +334,6 @@ STRINGLIB(utf8_encoder)(PyObject *unicode, i += (endpos - startpos - 1); break; - case _Py_ERROR_SURROGATEPASS: for (k=startpos; k<endpos; k++) { ch = data[k]; @@ -345,6 +344,22 @@ STRINGLIB(utf8_encoder)(PyObject *unicode, i += (endpos - startpos - 1); break; + case _Py_ERROR_BACKSLASHREPLACE: + p = backslashreplace(&writer, max_char_size, p, + unicode, startpos, endpos); + if (p == NULL) + goto error; + i += (endpos - startpos - 1); + break; + + case _Py_ERROR_XMLCHARREFREPLACE: + p = xmlcharrefreplace(&writer, max_char_size, p, + unicode, startpos, endpos); + if (p == NULL) + goto error; + i += (endpos - startpos - 1); + break; + case _Py_ERROR_SURROGATEESCAPE: for (k=startpos; k<endpos; k++) { ch = data[k]; @@ -359,7 +374,6 @@ STRINGLIB(utf8_encoder)(PyObject *unicode, startpos = k; assert(startpos < endpos); /* fall through the default handler */ - default: rep = unicode_encode_call_errorhandler( errors, &error_handler_obj, "utf-8", "surrogates not allowed", |