diff --git a/Modules/linuxaudiodev.c b/Modules/linuxaudiodev.c
index f6d5b7d..769451a 100644
--- a/Modules/linuxaudiodev.c
+++ b/Modules/linuxaudiodev.c
@@ -332,7 +332,6 @@
     default:
         return -EOPNOTSUPP;
     }
-    *nchannels = 0;
     if (ioctl(self->x_fd, SNDCTL_DSP_CHANNELS, nchannels) < 0)
         return -errno;
     return 0;
@@ -345,11 +344,11 @@
 lad_bufsize(lad_t *self, PyObject *args)
 {
     audio_buf_info ai;
-    int nchannels, ssize;
+    int nchannels=0, ssize=0;
 
     if (!PyArg_ParseTuple(args, ":bufsize")) return NULL;
 
-    if (_ssize(self, &nchannels, &ssize) < 0) {
+    if (_ssize(self, &nchannels, &ssize) < 0 || !ssize || !nchannels) {
         PyErr_SetFromErrno(LinuxAudioError);
         return NULL;
     }
@@ -366,12 +365,12 @@
 lad_obufcount(lad_t *self, PyObject *args)
 {
     audio_buf_info ai;
-    int nchannels, ssize;
+    int nchannels=0, ssize=0;
 
     if (!PyArg_ParseTuple(args, ":obufcount"))
         return NULL;
 
-    if (_ssize(self, &nchannels, &ssize) < 0) {
+    if (_ssize(self, &nchannels, &ssize) < 0 || !ssize || !nchannels) {
         PyErr_SetFromErrno(LinuxAudioError);
         return NULL;
     }
@@ -389,12 +388,12 @@
 lad_obuffree(lad_t *self, PyObject *args)
 {
     audio_buf_info ai;
-    int nchannels, ssize;
+    int nchannels=0, ssize=0;
 
     if (!PyArg_ParseTuple(args, ":obuffree"))
         return NULL;
 
-    if (_ssize(self, &nchannels, &ssize) < 0) {
+    if (_ssize(self, &nchannels, &ssize) < 0 || !ssize || !nchannels) {
         PyErr_SetFromErrno(LinuxAudioError);
         return NULL;
     }
diff --git a/Modules/ossaudiodev.c b/Modules/ossaudiodev.c
index 4c22b07..ce8a0d0 100644
--- a/Modules/ossaudiodev.c
+++ b/Modules/ossaudiodev.c
@@ -569,7 +569,6 @@
     default:
         return -EOPNOTSUPP;
     }
-    *nchannels = 0;
     if (ioctl(self->fd, SNDCTL_DSP_CHANNELS, nchannels) < 0)
         return -errno;
     return 0;
@@ -582,11 +581,11 @@
 oss_bufsize(oss_audio_t *self, PyObject *args)
 {
     audio_buf_info ai;
-    int nchannels, ssize;
+    int nchannels=0, ssize=0;
 
     if (!PyArg_ParseTuple(args, ":bufsize")) return NULL;
 
-    if (_ssize(self, &nchannels, &ssize) < 0) {
+    if (_ssize(self, &nchannels, &ssize) < 0 || !nchannels || !ssize) {
         PyErr_SetFromErrno(PyExc_IOError);
         return NULL;
     }
@@ -603,12 +602,12 @@
 oss_obufcount(oss_audio_t *self, PyObject *args)
 {
     audio_buf_info ai;
-    int nchannels, ssize;
+    int nchannels=0, ssize=0;
 
     if (!PyArg_ParseTuple(args, ":obufcount"))
         return NULL;
 
-    if (_ssize(self, &nchannels, &ssize) < 0) {
+    if (_ssize(self, &nchannels, &ssize) < 0 || !nchannels || !ssize) {
         PyErr_SetFromErrno(PyExc_IOError);
         return NULL;
     }
@@ -626,12 +625,12 @@
 oss_obuffree(oss_audio_t *self, PyObject *args)
 {
     audio_buf_info ai;
-    int nchannels, ssize;
+    int nchannels=0, ssize=0;
 
     if (!PyArg_ParseTuple(args, ":obuffree"))
         return NULL;
 
-    if (_ssize(self, &nchannels, &ssize) < 0) {
+    if (_ssize(self, &nchannels, &ssize) < 0 || !nchannels || !ssize) {
         PyErr_SetFromErrno(PyExc_IOError);
         return NULL;
     }
