Update of /cvsroot/alsa/alsa-oss
In directory sc8-pr-cvs1:/tmp/cvs-serv4911
Modified Files:
alsa-oss.c
Log Message:
- avoid the assert in snd_pcm_drain().
- fixed the possible segfault at the wrong release of resources.
- more debug messages.
Index: alsa-oss.c
===================================================================
RCS file: /cvsroot/alsa/alsa-oss/alsa-oss.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- alsa-oss.c 5 Nov 2003 11:17:08 -0000 1.40
+++ alsa-oss.c 1 Dec 2003 14:06:23 -0000 1.41
@@ -219,7 +219,8 @@
return err;
rate = dsp->rate;
err = snd_pcm_hw_params_set_rate_near(pcm, hw, &rate, 0);
- assert(err >= 0);
+ if (err < 0)
+ return err;
if (str->mmap_buffer) {
snd_pcm_access_mask_t *mask;
@@ -269,8 +270,6 @@
}
err = snd_pcm_hw_params(pcm, hw);
- if (err < 0)
- return err;
#if 0
if (debug)
snd_pcm_dump_setup(pcm, stderr);
@@ -365,8 +364,10 @@
oss_dsp_stream_t *str = &dsp->streams[k];
if (!str->pcm)
continue;
- if (k == SND_PCM_STREAM_PLAYBACK)
- snd_pcm_drain(str->pcm);
+ if (k == SND_PCM_STREAM_PLAYBACK) {
+ if (snd_pcm_state(str->pcm) != SND_PCM_STATE_OPEN)
+ snd_pcm_drain(str->pcm);
+ }
err = snd_pcm_close(str->pcm);
if (err < 0)
result = err;
@@ -435,7 +436,9 @@
fds[fd]->class = FD_OSS_DSP;
dsp = calloc(1, sizeof(oss_dsp_t));
if (!dsp) {
- errno = -ENOMEM;
+ free(fds[fd]);
+ fds[fd] = NULL;
+ errno = ENOMEM;
return -1;
}
fds[fd]->private = dsp;
@@ -1266,6 +1269,7 @@
}
if (err >= 0)
return 0;
+ DEBUG("dsp ioctl error = %d\n", err);
errno = -err;
return -1;
}
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive? Does it
help you create better code? SHARE THE LOVE, and help us help
YOU! Click Here: http://sourceforge.net/donate/
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog