PyUnicode_Resize(): warn about canonical representation
Call also directly unicode_resize() in unicodeobject.c
This commit is contained in:
parent
b0a82a6a7f
commit
16e6a80923
|
@ -779,7 +779,10 @@ PyAPI_FUNC(Py_UNICODE) PyUnicode_GetMax(void);
|
||||||
a new string and copy characters), or create a new string.
|
a new string and copy characters), or create a new string.
|
||||||
|
|
||||||
Error handling is implemented as follows: an exception is set, -1
|
Error handling is implemented as follows: an exception is set, -1
|
||||||
is returned and *unicode left untouched. */
|
is returned and *unicode left untouched.
|
||||||
|
|
||||||
|
WARNING: The function doesn't check string content, the result may not be a
|
||||||
|
string in canonical representation. */
|
||||||
|
|
||||||
PyAPI_FUNC(int) PyUnicode_Resize(
|
PyAPI_FUNC(int) PyUnicode_Resize(
|
||||||
PyObject **unicode, /* Pointer to the Unicode object */
|
PyObject **unicode, /* Pointer to the Unicode object */
|
||||||
|
|
|
@ -5040,7 +5040,7 @@ PyUnicode_DecodeUTF32Stateful(const char *s,
|
||||||
*consumed = (const char *)q-starts;
|
*consumed = (const char *)q-starts;
|
||||||
|
|
||||||
/* Adjust length */
|
/* Adjust length */
|
||||||
if (PyUnicode_Resize(&unicode, outpos) < 0)
|
if (unicode_resize(&unicode, outpos) < 0)
|
||||||
goto onError;
|
goto onError;
|
||||||
|
|
||||||
Py_XDECREF(errorHandler);
|
Py_XDECREF(errorHandler);
|
||||||
|
@ -5404,7 +5404,7 @@ PyUnicode_DecodeUTF16Stateful(const char *s,
|
||||||
*consumed = (const char *)q-starts;
|
*consumed = (const char *)q-starts;
|
||||||
|
|
||||||
/* Adjust length */
|
/* Adjust length */
|
||||||
if (PyUnicode_Resize(&unicode, outpos) < 0)
|
if (unicode_resize(&unicode, outpos) < 0)
|
||||||
goto onError;
|
goto onError;
|
||||||
|
|
||||||
Py_XDECREF(errorHandler);
|
Py_XDECREF(errorHandler);
|
||||||
|
@ -5824,7 +5824,7 @@ PyUnicode_DecodeUnicodeEscape(const char *s,
|
||||||
}
|
}
|
||||||
#undef WRITECHAR
|
#undef WRITECHAR
|
||||||
|
|
||||||
if (PyUnicode_Resize(&v, i) < 0)
|
if (unicode_resize(&v, i) < 0)
|
||||||
goto onError;
|
goto onError;
|
||||||
Py_XDECREF(errorHandler);
|
Py_XDECREF(errorHandler);
|
||||||
Py_XDECREF(exc);
|
Py_XDECREF(exc);
|
||||||
|
@ -6086,7 +6086,7 @@ PyUnicode_DecodeRawUnicodeEscape(const char *s,
|
||||||
nextByte:
|
nextByte:
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
if (PyUnicode_Resize(&v, outpos) < 0)
|
if (unicode_resize(&v, outpos) < 0)
|
||||||
goto onError;
|
goto onError;
|
||||||
Py_XDECREF(errorHandler);
|
Py_XDECREF(errorHandler);
|
||||||
Py_XDECREF(exc);
|
Py_XDECREF(exc);
|
||||||
|
@ -6273,7 +6273,7 @@ _PyUnicode_DecodeUnicodeInternal(const char *s,
|
||||||
goto onError;
|
goto onError;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PyUnicode_Resize(&v, outpos) < 0)
|
if (unicode_resize(&v, outpos) < 0)
|
||||||
goto onError;
|
goto onError;
|
||||||
Py_XDECREF(errorHandler);
|
Py_XDECREF(errorHandler);
|
||||||
Py_XDECREF(exc);
|
Py_XDECREF(exc);
|
||||||
|
@ -6727,7 +6727,7 @@ PyUnicode_DecodeASCII(const char *s,
|
||||||
data = PyUnicode_DATA(v);
|
data = PyUnicode_DATA(v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (PyUnicode_Resize(&v, outpos) < 0)
|
if (unicode_resize(&v, outpos) < 0)
|
||||||
goto onError;
|
goto onError;
|
||||||
Py_XDECREF(errorHandler);
|
Py_XDECREF(errorHandler);
|
||||||
Py_XDECREF(exc);
|
Py_XDECREF(exc);
|
||||||
|
@ -6874,7 +6874,7 @@ decode_code_page_strict(UINT code_page,
|
||||||
else {
|
else {
|
||||||
/* Extend unicode object */
|
/* Extend unicode object */
|
||||||
Py_ssize_t n = PyUnicode_GET_SIZE(*v);
|
Py_ssize_t n = PyUnicode_GET_SIZE(*v);
|
||||||
if (PyUnicode_Resize(v, n + outsize) < 0)
|
if (unicode_resize(v, n + outsize) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
out = PyUnicode_AS_UNICODE(*v) + n;
|
out = PyUnicode_AS_UNICODE(*v) + n;
|
||||||
}
|
}
|
||||||
|
@ -6958,7 +6958,7 @@ decode_code_page_errors(UINT code_page,
|
||||||
PyErr_NoMemory();
|
PyErr_NoMemory();
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
if (PyUnicode_Resize(v, n + size * Py_ARRAY_LENGTH(buffer)) < 0)
|
if (unicode_resize(v, n + size * Py_ARRAY_LENGTH(buffer)) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
startout = PyUnicode_AS_UNICODE(*v) + n;
|
startout = PyUnicode_AS_UNICODE(*v) + n;
|
||||||
}
|
}
|
||||||
|
@ -7017,7 +7017,7 @@ decode_code_page_errors(UINT code_page,
|
||||||
/* Extend unicode object */
|
/* Extend unicode object */
|
||||||
outsize = out - startout;
|
outsize = out - startout;
|
||||||
assert(outsize <= PyUnicode_WSTR_LENGTH(*v));
|
assert(outsize <= PyUnicode_WSTR_LENGTH(*v));
|
||||||
if (PyUnicode_Resize(v, outsize) < 0)
|
if (unicode_resize(v, outsize) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
ret = size;
|
ret = size;
|
||||||
|
|
||||||
|
@ -7664,8 +7664,9 @@ PyUnicode_DecodeCharmap(const char *s,
|
||||||
(targetsize << 2);
|
(targetsize << 2);
|
||||||
extrachars += needed;
|
extrachars += needed;
|
||||||
/* XXX overflow detection missing */
|
/* XXX overflow detection missing */
|
||||||
if (PyUnicode_Resize(&v,
|
if (unicode_resize(&v,
|
||||||
PyUnicode_GET_LENGTH(v) + needed) < 0) {
|
PyUnicode_GET_LENGTH(v) + needed) < 0)
|
||||||
|
{
|
||||||
Py_DECREF(x);
|
Py_DECREF(x);
|
||||||
goto onError;
|
goto onError;
|
||||||
}
|
}
|
||||||
|
@ -7689,7 +7690,7 @@ PyUnicode_DecodeCharmap(const char *s,
|
||||||
++s;
|
++s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (PyUnicode_Resize(&v, outpos) < 0)
|
if (unicode_resize(&v, outpos) < 0)
|
||||||
goto onError;
|
goto onError;
|
||||||
Py_XDECREF(errorHandler);
|
Py_XDECREF(errorHandler);
|
||||||
Py_XDECREF(exc);
|
Py_XDECREF(exc);
|
||||||
|
|
Loading…
Reference in New Issue