mirror of https://github.com/python/cpython.git
charmap_encoding_error() uses the new Unicode API
This commit is contained in:
parent
7c8bbbbb0c
commit
ae4f7c8e59
|
@ -8087,7 +8087,9 @@ charmap_encoding_error(
|
||||||
PyObject *repunicode = NULL; /* initialize to prevent gcc warning */
|
PyObject *repunicode = NULL; /* initialize to prevent gcc warning */
|
||||||
Py_ssize_t size, repsize;
|
Py_ssize_t size, repsize;
|
||||||
Py_ssize_t newpos;
|
Py_ssize_t newpos;
|
||||||
Py_UNICODE *uni2;
|
enum PyUnicode_Kind kind;
|
||||||
|
void *data;
|
||||||
|
Py_ssize_t index;
|
||||||
/* startpos for collecting unencodable chars */
|
/* startpos for collecting unencodable chars */
|
||||||
Py_ssize_t collstartpos = *inpos;
|
Py_ssize_t collstartpos = *inpos;
|
||||||
Py_ssize_t collendpos = *inpos+1;
|
Py_ssize_t collendpos = *inpos+1;
|
||||||
|
@ -8201,10 +8203,18 @@ charmap_encoding_error(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* generate replacement */
|
/* generate replacement */
|
||||||
|
if (PyUnicode_READY(repunicode) < 0) {
|
||||||
|
Py_DECREF(repunicode);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
repsize = PyUnicode_GET_SIZE(repunicode);
|
repsize = PyUnicode_GET_SIZE(repunicode);
|
||||||
for (uni2 = PyUnicode_AS_UNICODE(repunicode); repsize-->0; ++uni2) {
|
data = PyUnicode_DATA(repunicode);
|
||||||
x = charmapencode_output(*uni2, mapping, res, respos);
|
kind = PyUnicode_KIND(repunicode);
|
||||||
|
for (index = 0; index < repsize; index++) {
|
||||||
|
Py_UCS4 repch = PyUnicode_READ(kind, data, index);
|
||||||
|
x = charmapencode_output(repch, mapping, res, respos);
|
||||||
if (x==enc_EXCEPTION) {
|
if (x==enc_EXCEPTION) {
|
||||||
|
Py_DECREF(repunicode);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
else if (x==enc_FAILED) {
|
else if (x==enc_FAILED) {
|
||||||
|
|
Loading…
Reference in New Issue