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

georg.brandl python-checkins at python.org
Tue May 23 18:22:56 CEST 2006


Author: georg.brandl
Date: Tue May 23 18:22:55 2006
New Revision: 46119
Modified:
 sandbox/trunk/decimal-c/_decimal.c
Log:
Fix off-by-one errors.
Modified: sandbox/trunk/decimal-c/_decimal.c
==============================================================================
--- sandbox/trunk/decimal-c/_decimal.c	(original)
+++ sandbox/trunk/decimal-c/_decimal.c	Tue May 23 18:22:55 2006
@@ -181,6 +181,7 @@
 static decimalobject *_decimal_from_pylong(PyTypeObject *, PyObject *, contextobject *);
 static PyObject * py_context_shallow_copy(PyObject *, PyObject *, PyObject *);
 static contextobject * context_shallow_copy(contextobject *);
+static PyObject *decimal_from_long(PyTypeObject *, long);
 
 /* Decimal methods ***********************************************************/
 
@@ -1003,13 +1004,13 @@
 decimal_copy(decimalobject *self)
 {
 decimalobject *new;
- long size = self->ob_size;
+ long i;
 
- new = _NEW_decimalobj(size, self->sign, self->exp);
+ new = _NEW_decimalobj(self->ob_size, self->sign, self->exp);
 if (!new)
 return NULL;
- while (--size)
- new->digits[size] = self->digits[size];
+ for (i = 0; i < self->ob_size; i++)
+ new->digits[i] = self->digits[i];
 return new;
 }
 
@@ -1364,7 +1365,7 @@
 
 /* If it's not a zero, strip leading 0s */
 for (p = str+ipos; p-str < dend; ++p) {
- if (*p != '0' && *p != '.') {
+ if (*p != '0') {
 /* first nonzero digit */
 ipos = (p-str);
 goto finish;
@@ -1415,7 +1416,7 @@
 }
 
 PyObject *
-_decimal_from_long(PyTypeObject *type, long value)
+decimal_from_long(PyTypeObject *type, long value)
 {
 decimalobject *new;
 long v = value;
@@ -1449,7 +1450,7 @@
 PyObject *
 PyDecimal_FromLong(long value)
 {
- return _decimal_from_long(&PyDecimal_DecimalType, value);
+ return decimal_from_long(&PyDecimal_DecimalType, value);
 }
 
 /* convert from a 3-tuple of (sign, digits, exp) */


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /