]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - alsa_write.c
string: Introduce arr_realloc() and check for integer overflow.
[paraslash.git] / alsa_write.c
index 2d834022427d309289eee12b14a6c07450a1125f..1dee5ac812eed336f007c8ee25b3cca2eb1e9eb4 100644 (file)
@@ -296,7 +296,7 @@ again:
 
                if (bytes == 0) /* no data available */
                        return 0;
-               pad = wn->private_data = para_calloc(sizeof(*pad));
+               pad = wn->private_data = zalloc(sizeof(*pad));
                ret = get_btr_sample_rate(btrn, &val);
                if (ret < 0)
                        goto err;
@@ -331,7 +331,11 @@ again:
                goto again;
        }
        if (frames == -EPIPE) {
-               PARA_WARNING_LOG("underrun (tried to write %zu bytes)\n", bytes);
+               snd_pcm_status_t *status;
+               snd_pcm_status_malloc(&status);
+               if (snd_pcm_status_get_state(status) == SND_PCM_STATE_XRUN)
+                       PARA_WARNING_LOG("underrun\n");
+               snd_pcm_status_free(status);
                snd_pcm_prepare(pad->handle);
                return 0;
        }