From c8a6b9b6d67c4bf343f3771fcae0002160066fe3 Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Sat, 14 Jul 2001 11:01:28 +0000 Subject: long_format(): Simplify new code a bit. --- Objects/longobject.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Objects/longobject.c b/Objects/longobject.c index 53ae5ed..b9cc924 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -840,17 +840,20 @@ long_format(PyObject *aa, int base, int addL) Py_DECREF(str); return NULL; }) - while (--ntostore >= 0) { + assert(ntostore > 0); + do { digit nextrem = (digit)(rem / base); char c = (char)(rem - nextrem * base); assert(p > PyString_AS_STRING(str)); c += (c < 10) ? '0' : 'A'-10; *--p = c; rem = nextrem; - if (a->ob_size == 0 && rem == 0) - break; /* skip leading zeroes */ - } - } while (ABS(a->ob_size) != 0); + --ntostore; + /* Termination is a bit delicate: must not + store leading zeroes, so must get out if + a and rem are both 0 now. */ + } while (ntostore && (a->ob_size || rem)); + } while (a->ob_size != 0); Py_DECREF(a); } -- cgit v0.12