mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Don't check for the maximum character when copying from unicodeobject.c
* Create copy_characters() function which doesn't check for the maximum character in release mode * _PyUnicode_CheckConsistency() is no more static to be able to use it in _PyUnicode_FormatAdvanced() (in formatter_unicode.c) * _PyUnicode_CheckConsistency() checks the string hash
This commit is contained in:
parent
05d1189566
commit
fb9ea8c57e
3 changed files with 198 additions and 193 deletions
|
@ -1284,33 +1284,31 @@ _PyUnicode_FormatAdvanced(PyObject *obj,
|
|||
Py_ssize_t start, Py_ssize_t end)
|
||||
{
|
||||
InternalFormatSpec format;
|
||||
PyObject *result = NULL;
|
||||
PyObject *result;
|
||||
|
||||
/* check for the special case of zero length format spec, make
|
||||
it equivalent to str(obj) */
|
||||
if (start == end) {
|
||||
result = PyObject_Str(obj);
|
||||
goto done;
|
||||
}
|
||||
if (start == end)
|
||||
return PyObject_Str(obj);
|
||||
|
||||
/* parse the format_spec */
|
||||
if (!parse_internal_render_format_spec(format_spec, start, end,
|
||||
&format, 's', '<'))
|
||||
goto done;
|
||||
return NULL;
|
||||
|
||||
/* type conversion? */
|
||||
switch (format.type) {
|
||||
case 's':
|
||||
/* no type conversion needed, already a string. do the formatting */
|
||||
result = format_string_internal(obj, &format);
|
||||
if (result != NULL)
|
||||
assert(_PyUnicode_CheckConsistency(result, 1));
|
||||
break;
|
||||
default:
|
||||
/* unknown */
|
||||
unknown_presentation_type(format.type, obj->ob_type->tp_name);
|
||||
goto done;
|
||||
result = NULL;
|
||||
}
|
||||
|
||||
done:
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue