summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2011-10-05 23:45:57 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2011-10-05 23:45:57 (GMT)
commitfb9ea8c57eeab6837c830613524c1250488baed1 (patch)
tree3b4d82d2834361895ae406ffa00bcf6dd1265e85 /Python
parent05d1189566c4caa3b2c9b474159a04d0d61364c3 (diff)
downloadcpython-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.c16
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;
}