Commit cd36ee28 authored by Barry Warsaw's avatar Barry Warsaw

Plugged a couple of potential return value problems, memory leaks, and

descriptor leaks.
parent 3612af78
...@@ -118,8 +118,10 @@ newsadobject(arg) ...@@ -118,8 +118,10 @@ newsadobject(arg)
/* Create and initialize the object */ /* Create and initialize the object */
xp = PyObject_NEW(sadobject, &Sadtype); xp = PyObject_NEW(sadobject, &Sadtype);
if (xp == NULL) if (xp == NULL) {
close(fd);
return NULL; return NULL;
}
xp->x_fd = fd; xp->x_fd = fd;
xp->x_icount = xp->x_ocount = 0; xp->x_icount = xp->x_ocount = 0;
xp->x_isctl = (imode < 0); xp->x_isctl = (imode < 0);
...@@ -162,8 +164,8 @@ sad_read(self, args) ...@@ -162,8 +164,8 @@ sad_read(self, args)
} }
#if 0 #if 0
/* TBD: why print this message if you can handle the condition? /* TBD: why print this message if you can handle the condition?
assume it's debugging info which we can just as well get rid * assume it's debugging info which we can just as well get rid
of. in any case this message should *not* be using printf! * of. in any case this message should *not* be using printf!
*/ */
if (count != size) if (count != size)
printf("sunaudio: funny read rv %d wtd %d\n", count, size); printf("sunaudio: funny read rv %d wtd %d\n", count, size);
...@@ -211,7 +213,9 @@ sad_getinfo(self, args) ...@@ -211,7 +213,9 @@ sad_getinfo(self, args)
if (!PyArg_Parse(args, "")) if (!PyArg_Parse(args, ""))
return NULL; return NULL;
rv = sads_alloc(); if (!(rv = sads_alloc()))
return NULL;
if (ioctl(self->x_fd, AUDIO_GETINFO, &rv->ai) < 0) { if (ioctl(self->x_fd, AUDIO_GETINFO, &rv->ai) < 0) {
PyErr_SetFromErrno(SunAudioError); PyErr_SetFromErrno(SunAudioError);
Py_DECREF(rv); Py_DECREF(rv);
...@@ -501,7 +505,8 @@ initsunaudiodev() ...@@ -501,7 +505,8 @@ initsunaudiodev()
m = Py_InitModule("sunaudiodev", sunaudiodev_methods); m = Py_InitModule("sunaudiodev", sunaudiodev_methods);
d = PyModule_GetDict(m); d = PyModule_GetDict(m);
SunAudioError = PyString_FromString("sunaudiodev.error"); SunAudioError = PyString_FromString("sunaudiodev.error");
if ( SunAudioError == NULL || if (SunAudioError)
PyDict_SetItemString(d, "error", SunAudioError) ) PyDict_SetItemString(d, "error", SunAudioError);
Py_FatalError("can't define sunaudiodev.error"); if (PyErr_Occurred())
Py_FatalError("can't initialize sunaudiodev module");
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment