Mercurial > cpython-lru_cache-weakref
diff Python/formatter_unicode.c @ 72497:f05c2df39ea8
fill_number() and format_string_internal() check for PyUnicode_CopyCharacters() failure
| author | Victor Stinner <victor.stinner@haypocalc.com> |
|---|---|
| date | Wed, 28 Sep 2011 21:53:49 +0200 |
| parents | ad337be523bf |
| children | 05ed6e5f2cf4 |
line wrap: on
line diff
--- a/Python/formatter_unicode.c Wed Sep 28 21:50:42 2011 +0200 +++ b/Python/formatter_unicode.c Wed Sep 28 21:53:49 2011 +0200 @@ -566,7 +566,10 @@ PyUnicode_WRITE(kind, data, pos++, spec->sign); } if (spec->n_prefix) { - PyUnicode_CopyCharacters(out, pos, prefix, p_start, spec->n_prefix); + if (PyUnicode_CopyCharacters(out, pos, + prefix, p_start, + spec->n_prefix) < 0) + return -1; if (toupper) { Py_ssize_t t; /* XXX if the upper-case prefix is wider than the target @@ -632,7 +635,8 @@ } if (spec->n_remainder) { - PyUnicode_CopyCharacters(out, pos, digits, d_pos, spec->n_remainder); + if (PyUnicode_CopyCharacters(out, pos, digits, d_pos, spec->n_remainder) < 0) + return -1; pos += spec->n_remainder; d_pos += spec->n_remainder; } @@ -735,7 +739,8 @@ lpad, rpad); /* Then the source string. */ - PyUnicode_CopyCharacters(result, pos, value, 0, len); + if (PyUnicode_CopyCharacters(result, pos, value, 0, len) < 0) + Py_CLEAR(result); done: return result;
