diff Python/dtoa.c @ 58458:d77c947ff7db legacy-trunk

Issue #7743: Add checks for zero inputs to the lshift and mult functions; this fixes the first bug described in issue #7743.
author Mark Dickinson <dickinsm@gmail.com>
date Sat, 23 Jan 2010 20:48:56 +0000
parents 7a9f36cc6df1
children b40a5a568e76
line wrap: on
line diff
--- a/Python/dtoa.c	Sat Jan 23 17:52:57 2010 +0000
+++ b/Python/dtoa.c	Sat Jan 23 20:48:56 2010 +0000
@@ -622,6 +622,15 @@
     ULong z2;
 #endif
 
+    if ((!a->x[0] && a->wds == 1) || (!b->x[0] && b->wds == 1)) {
+        c = Balloc(0);
+        if (c == NULL)
+            return NULL;
+        c->wds = 1;
+        c->x[0] = 0;
+        return c;
+    }
+
     if (a->wds < b->wds) {
         c = a;
         a = b;
@@ -820,6 +829,9 @@
     Bigint *b1;
     ULong *x, *x1, *xe, z;
 
+    if (!k || (!b->x[0] && b->wds == 1))
+        return b;
+
     n = k >> 5;
     k1 = b->k;
     n1 = n + b->wds + 1;