mirror of
https://github.com/python/cpython.git
synced 2024-11-25 19:03:49 +08:00
Change PyUnicode_EncodeRawUnicodeEscape() to return bytes
objects (PyUnicode_AsRawUnicodeEscapeString() still returns str8 objects).
This commit is contained in:
parent
db5d33e4ee
commit
711005d339
@ -2363,16 +2363,16 @@ PyObject *PyUnicode_EncodeRawUnicodeEscape(const Py_UNICODE *s,
|
||||
char *q;
|
||||
|
||||
#ifdef Py_UNICODE_WIDE
|
||||
repr = PyString_FromStringAndSize(NULL, 10 * size);
|
||||
repr = PyBytes_FromStringAndSize(NULL, 10 * size);
|
||||
#else
|
||||
repr = PyString_FromStringAndSize(NULL, 6 * size);
|
||||
repr = PyBytes_FromStringAndSize(NULL, 6 * size);
|
||||
#endif
|
||||
if (repr == NULL)
|
||||
return NULL;
|
||||
if (size == 0)
|
||||
return repr;
|
||||
|
||||
p = q = PyString_AS_STRING(repr);
|
||||
p = q = PyBytes_AS_STRING(repr);
|
||||
while (size-- > 0) {
|
||||
Py_UNICODE ch = *s++;
|
||||
#ifdef Py_UNICODE_WIDE
|
||||
@ -2405,18 +2405,29 @@ PyObject *PyUnicode_EncodeRawUnicodeEscape(const Py_UNICODE *s,
|
||||
*p++ = (char) ch;
|
||||
}
|
||||
*p = '\0';
|
||||
_PyString_Resize(&repr, p - q);
|
||||
if (PyBytes_Resize(repr, p - q)) {
|
||||
Py_DECREF(repr);
|
||||
return NULL;
|
||||
}
|
||||
return repr;
|
||||
}
|
||||
|
||||
PyObject *PyUnicode_AsRawUnicodeEscapeString(PyObject *unicode)
|
||||
{
|
||||
PyObject *s, *result;
|
||||
if (!PyUnicode_Check(unicode)) {
|
||||
PyErr_BadArgument();
|
||||
return NULL;
|
||||
PyErr_BadArgument();
|
||||
return NULL;
|
||||
}
|
||||
return PyUnicode_EncodeRawUnicodeEscape(PyUnicode_AS_UNICODE(unicode),
|
||||
PyUnicode_GET_SIZE(unicode));
|
||||
s = PyUnicode_EncodeRawUnicodeEscape(PyUnicode_AS_UNICODE(unicode),
|
||||
PyUnicode_GET_SIZE(unicode));
|
||||
|
||||
if (!s)
|
||||
return NULL;
|
||||
result = PyString_FromStringAndSize(PyBytes_AS_STRING(s),
|
||||
PyBytes_GET_SIZE(s));
|
||||
Py_DECREF(s);
|
||||
return result;
|
||||
}
|
||||
|
||||
/* --- Unicode Internal Codec ------------------------------------------- */
|
||||
|
Loading…
Reference in New Issue
Block a user