summaryrefslogtreecommitdiffstats
path: root/Objects/longobject.c
diff options
context:
space:
mode:
authorThomas Wouters <thomas@python.org>2006-02-01 21:32:04 (GMT)
committerThomas Wouters <thomas@python.org>2006-02-01 21:32:04 (GMT)
commit553489ab1db7990998aae3bffc0a1e20f5dc51af (patch)
tree92c02a3706458b75bcd741b140a4f199bba82e93 /Objects/longobject.c
parent548148810bfb4f44450a93f98912a5eee07d4303 (diff)
downloadcpython-553489ab1db7990998aae3bffc0a1e20f5dc51af.zip
cpython-553489ab1db7990998aae3bffc0a1e20f5dc51af.tar.gz
cpython-553489ab1db7990998aae3bffc0a1e20f5dc51af.tar.bz2
As discussed on python-dev, silence three gcc-4.0.x warnings, using assert()
to protect against actual uninitialized usage. Objects/longobject.c: In function ‘PyLong_AsDouble’: Objects/longobject.c:655: warning: ‘e’ may be used uninitialized in this function Objects/longobject.c: In function ‘long_true_divide’: Objects/longobject.c:2263: warning: ‘aexp’ may be used uninitialized in this function Objects/longobject.c:2263: warning: ‘bexp’ may be used uninitialized in this function
Diffstat (limited to 'Objects/longobject.c')
-rw-r--r--Objects/longobject.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/Objects/longobject.c b/Objects/longobject.c
index 6f98d44..32f7958 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -652,7 +652,7 @@ _PyLong_AsScaledDouble(PyObject *vv, int *exponent)
double
PyLong_AsDouble(PyObject *vv)
{
- int e;
+ int e = -1;
double x;
if (vv == NULL || !PyLong_Check(vv)) {
@@ -662,6 +662,9 @@ PyLong_AsDouble(PyObject *vv)
x = _PyLong_AsScaledDouble(vv, &e);
if (x == -1.0 && PyErr_Occurred())
return -1.0;
+ /* 'e' initialized to -1 to silence gcc-4.0.x, but it should be
+ set correctly after a successful _PyLong_AsScaledDouble() call */
+ assert(e >= 0);
if (e > INT_MAX / SHIFT)
goto overflow;
errno = 0;
@@ -2260,7 +2263,7 @@ long_true_divide(PyObject *v, PyObject *w)
{
PyLongObject *a, *b;
double ad, bd;
- int aexp, bexp, failed;
+ int failed, aexp = -1, bexp = -1;
CONVERT_BINOP(v, w, &a, &b);
ad = _PyLong_AsScaledDouble((PyObject *)a, &aexp);
@@ -2270,6 +2273,10 @@ long_true_divide(PyObject *v, PyObject *w)
Py_DECREF(b);
if (failed)
return NULL;
+ /* 'aexp' and 'bexp' were initialized to -1 to silence gcc-4.0.x,
+ but should really be set correctly after sucessful calls to
+ _PyLong_AsScaledDouble() */
+ assert(aexp >= 0 && bexp >= 0);
if (bd == 0.0) {
PyErr_SetString(PyExc_ZeroDivisionError,