[Python-checkins] r46565 - sandbox/trunk/decimal-c/_decimal.c

mateusz.rukowicz python-checkins at python.org
Tue May 30 20:35:15 CEST 2006


Author: mateusz.rukowicz
Date: Tue May 30 20:35:14 2006
New Revision: 46565

Modified:
   sandbox/trunk/decimal-c/_decimal.c
Log:
Some memleaks fix.


Modified: sandbox/trunk/decimal-c/_decimal.c
==============================================================================
--- sandbox/trunk/decimal-c/_decimal.c	(original)
+++ sandbox/trunk/decimal-c/_decimal.c	Tue May 30 20:35:14 2006
@@ -1963,7 +1963,7 @@
     if (!decimal_nonzero(self)) {
         oexp = other->exp - ctx->prec - 1;
         exp = (exp > oexp ? exp : oexp);
-        res = _decimal_rescale(other, exp, ctx, 0);
+        res = _decimal_rescale(other, exp, ctx, 0, 1);
         if (!res) return NULL;
         if (shouldround) {
             res2 = _decimal_fix(res, ctx);
@@ -1976,7 +1976,7 @@
     if (!decimal_nonzero(other)) {
         oexp = self->exp - ctx->prec - 1;
         exp = (exp > oexp ? exp : oexp);
-        res = _decimal_rescale(self, exp, ctx, 0);
+        res = _decimal_rescale(self, exp, ctx, 0, 1);
         if (!res) return NULL;
         if (shouldround) {
             res2 = _decimal_fix(res, ctx);
@@ -2646,18 +2646,18 @@
     } else {
         tup = PySequence_Tuple(seq);
         if (!tup)
-            return NULL;
+            goto err;
     }
 
     if (PyTuple_GET_SIZE(tup) != 3) {
         PyErr_SetString(PyExc_ValueError, "Invalid arguments");
-        return NULL;
+        goto err;
     }
     if (!PyArg_ParseTuple(tup, "iOl", &sign, &digits, &exp))
-        return NULL;
+        goto err;
     if (sign < 0 || sign > 7) {
         PyErr_SetString(PyExc_ValueError, "Invalid sign");
-        return NULL;
+        goto err;
     }
     digtup = PySequence_Tuple(digits);
     if (!digtup) {
@@ -2671,22 +2671,22 @@
             long x = PyInt_AsLong(item);
             if (x < 0 || x > 9) {
                 PyErr_Format(PyExc_ValueError, "Invalid digit: %ld", x);
-                return NULL;
+                goto err;
             }
             new->digits[i] = (signed char)x;
         } else if (PyLong_Check(item)) {
             long x = PyLong_AsLong(item);
             if (x == -1 && PyErr_Occurred())
-                return NULL;
+                goto err;
             if (x < 0 || x > 9) {
                 PyErr_Format(PyExc_ValueError, "Invalid digit: %ld", x);
-                return NULL;
+                return err;
             }
             new->digits[i] = (signed char)x;
         } else {
             PyErr_SetString(PyExc_ValueError, "The second value in the tuple "
                             "must be composed of non  negative integer elements.");
-            return NULL;
+            return err;
         }
     }
 


More information about the Python-checkins mailing list