mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
Issue #26464: Fix unicode_fast_translate() again
Initialize i variable if the string is non-ASCII.
This commit is contained in:
parent
6c9aa8f2bf
commit
337986740f
2 changed files with 22 additions and 13 deletions
|
@ -8582,10 +8582,6 @@ unicode_fast_translate(PyObject *input, PyObject *mapping,
|
|||
Py_UCS1 *in, *end, *out;
|
||||
int res = 0;
|
||||
|
||||
if (PyUnicode_READY(input) == -1)
|
||||
return -1;
|
||||
if (!PyUnicode_IS_ASCII(input))
|
||||
return 0;
|
||||
len = PyUnicode_GET_LENGTH(input);
|
||||
|
||||
memset(ascii_table, 0xff, 128);
|
||||
|
@ -8668,13 +8664,20 @@ _PyUnicode_TranslateCharmap(PyObject *input,
|
|||
|
||||
ignore = (errors != NULL && strcmp(errors, "ignore") == 0);
|
||||
|
||||
res = unicode_fast_translate(input, mapping, &writer, ignore, &i);
|
||||
if (res < 0) {
|
||||
_PyUnicodeWriter_Dealloc(&writer);
|
||||
if (PyUnicode_READY(input) == -1)
|
||||
return NULL;
|
||||
if (PyUnicode_IS_ASCII(input)) {
|
||||
res = unicode_fast_translate(input, mapping, &writer, ignore, &i);
|
||||
if (res < 0) {
|
||||
_PyUnicodeWriter_Dealloc(&writer);
|
||||
return NULL;
|
||||
}
|
||||
if (res == 1)
|
||||
return _PyUnicodeWriter_Finish(&writer);
|
||||
}
|
||||
else {
|
||||
i = 0;
|
||||
}
|
||||
if (res == 1)
|
||||
return _PyUnicodeWriter_Finish(&writer);
|
||||
|
||||
while (i<size) {
|
||||
/* try to encode it */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue