[Python-checkins] python/nondist/sandbox/twister _random.c,1.4,1.5
rhettinger@users.sourceforge.net
rhettinger@users.sourceforge.net
Wed, 25 Dec 2002 15:48:07 -0800
Update of /cvsroot/python/python/nondist/sandbox/twister
In directory sc8-pr-cvs1:/tmp/cvs-serv12876
Modified Files:
_random.c
Log Message:
Plugged three leaks.
Still looking for the crasher.
Narrowed it down to random_new.
Index: _random.c
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/twister/_random.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** _random.c 25 Dec 2002 21:01:04 -0000 1.4
--- _random.c 25 Dec 2002 23:48:04 -0000 1.5
***************
*** 140,144 ****
/* initializes mt[N] with a seed */
! static PyObject *
init_genrand(RandomObject *self, unsigned long s)
{
--- 140,144 ----
/* initializes mt[N] with a seed */
! static void
init_genrand(RandomObject *self, unsigned long s)
{
***************
*** 146,150 ****
unsigned long *mt;
- assert(RandomObject_Check(self));
mt = self->state;
mt[0]= s & 0xffffffffUL;
--- 146,149 ----
***************
*** 160,165 ****
}
self->index = mti;
! Py_INCREF(Py_None);
! return Py_None;
}
--- 159,163 ----
}
self->index = mti;
! return;
}
***************
*** 221,225 ****
if (arg == NULL || arg == Py_None) {
time(&now);
! return init_genrand(self, (unsigned long)now);
}
--- 219,225 ----
if (arg == NULL || arg == Py_None) {
time(&now);
! init_genrand(self, (unsigned long)now);
! Py_INCREF(Py_None);
! return Py_None;
}
***************
*** 249,255 ****
assert(PyLong_Check(little));
err = PyList_Append(split, little);
if (err == -1)
goto Done;
- little = NULL;
newarg = PyNumber_Rshift(arg, thirtytwo);
if (newarg == NULL)
--- 249,255 ----
assert(PyLong_Check(little));
err = PyList_Append(split, little);
+ Py_XDECREF(little);
if (err == -1)
goto Done;
newarg = PyNumber_Rshift(arg, thirtytwo);
if (newarg == NULL)
***************
*** 279,283 ****
Py_XDECREF(masklower);
Py_XDECREF(thirtytwo);
- Py_XDECREF(little);
Py_DECREF(arg);
Py_DECREF(split);
--- 279,282 ----
***************
*** 378,384 ****
unsigned long *mt, tmp;
- assert(RandomObject_Check(self));
mt = self->state;
-
for (i=N-1 ; i>1 ; i--) {
iobj = PyInt_FromLong(i);
--- 377,381 ----
***************
*** 408,418 ****
{
RandomObject *self;
self = (RandomObject *)type->tp_alloc(type, 0);
if (self == NULL)
return NULL;
! if (random_seed(self, args) == NULL) {
Py_DECREF(self);
return NULL;
}
return (PyObject *)self;
}
--- 405,419 ----
{
RandomObject *self;
+ PyObject *tmp;
+
self = (RandomObject *)type->tp_alloc(type, 0);
if (self == NULL)
return NULL;
! tmp = random_seed(self, args);
! if (tmp == NULL) {
Py_DECREF(self);
return NULL;
}
+ Py_DECREF(tmp);
return (PyObject *)self;
}