diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2011-10-05 23:45:57 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2011-10-05 23:45:57 (GMT) |
commit | fb9ea8c57eeab6837c830613524c1250488baed1 (patch) | |
tree | 3b4d82d2834361895ae406ffa00bcf6dd1265e85 /Python | |
parent | 05d1189566c4caa3b2c9b474159a04d0d61364c3 (diff) | |
download | cpython-fb9ea8c57eeab6837c830613524c1250488baed1.zip cpython-fb9ea8c57eeab6837c830613524c1250488baed1.tar.gz cpython-fb9ea8c57eeab6837c830613524c1250488baed1.tar.bz2 |
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
Diffstat (limited to 'Python')
-rw-r--r-- | Python/formatter_unicode.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/Python/formatter_unicode.c b/Python/formatter_unicode.c index c989d83..a389734 100644 --- a/Python/formatter_unicode.c +++ b/Python/formatter_unicode.c @@ -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; } |