Mercurial > cpython-lru_cache-weakref
diff Objects/unicodeobject.c @ 53082:4e08b18e38fb
#5708: a bit of streamlining in unicode_repeat().
| author | Georg Brandl <georg@python.org> |
|---|---|
| date | Sun, 12 Apr 2009 12:01:50 +0000 |
| parents | 28096ed73153 |
| children | b653eab13b73 |
line wrap: on
line diff
--- a/Objects/unicodeobject.c Sun Apr 12 11:34:13 2009 +0000 +++ b/Objects/unicodeobject.c Sun Apr 12 12:01:50 2009 +0000 @@ -7738,8 +7738,10 @@ Py_ssize_t nchars; size_t nbytes; - if (len < 0) - len = 0; + if (len < 1) { + Py_INCREF(unicode_empty); + return (PyObject *)unicode_empty; + } if (len == 1 && PyUnicode_CheckExact(str)) { /* no repeat, return original string */ @@ -7751,7 +7753,7 @@ * needed doesn't overflow size_t */ nchars = len * str->length; - if (len && nchars / len != str->length) { + if (nchars / len != str->length) { PyErr_SetString(PyExc_OverflowError, "repeated string is too long"); return NULL; @@ -7768,14 +7770,11 @@ p = u->str; - if (str->length == 1 && len > 0) { + if (str->length == 1) { Py_UNICODE_FILL(p, str->str[0], len); } else { - Py_ssize_t done = 0; /* number of characters copied this far */ - if (done < nchars) { - Py_UNICODE_COPY(p, str->str, str->length); - done = str->length; - } + Py_ssize_t done = str->length; /* number of characters copied this far */ + Py_UNICODE_COPY(p, str->str, str->length); while (done < nchars) { Py_ssize_t n = (done <= nchars-done) ? done : nchars-done; Py_UNICODE_COPY(p+done, p, n);
