Mercurial > cpython-lru_cache-weakref
diff Python/formatter_unicode.c @ 72714:6f03716079a9
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
| author | Victor Stinner <victor.stinner@haypocalc.com> |
|---|---|
| date | Thu, 06 Oct 2011 01:45:57 +0200 |
| parents | 05ed6e5f2cf4 |
| children | c25262e97304 |
line wrap: on
line diff
--- a/Python/formatter_unicode.c Thu Oct 06 01:13:58 2011 +0200 +++ b/Python/formatter_unicode.c Thu Oct 06 01:45:57 2011 +0200 @@ -1284,33 +1284,31 @@ 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; }
