mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-05 13:30:00 -05:00
pcm_file: in case of failed write clear file buffer variables
previously, in case of failed write to output file, error is returned from snd_pcm_writei/read APIs, user could run pcm_drain as fallback and encounter an assert, since drain would try to write remaining file buffer to a file if failed to write to output file in first place, it makes sense to clear current internal pmc_file file buffer variables Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com> Reviewed-by: Timo Wischer <twischer@de.adit-jv.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
61b0f8f3f2
commit
de1a9b2e81
1 changed files with 6 additions and 1 deletions
|
|
@ -391,8 +391,11 @@ static int snd_pcm_file_write_bytes(snd_pcm_t *pcm, size_t bytes)
|
||||||
if (file->format == SND_PCM_FILE_FORMAT_WAV &&
|
if (file->format == SND_PCM_FILE_FORMAT_WAV &&
|
||||||
!file->wav_header.fmt) {
|
!file->wav_header.fmt) {
|
||||||
err = write_wav_header(pcm);
|
err = write_wav_header(pcm);
|
||||||
if (err < 0)
|
if (err < 0) {
|
||||||
|
file->wbuf_used_bytes = 0;
|
||||||
|
file->file_ptr_bytes = 0;
|
||||||
return err;
|
return err;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (bytes > 0) {
|
while (bytes > 0) {
|
||||||
|
|
@ -403,6 +406,8 @@ static int snd_pcm_file_write_bytes(snd_pcm_t *pcm, size_t bytes)
|
||||||
err = write(file->fd, file->wbuf + file->file_ptr_bytes, n);
|
err = write(file->fd, file->wbuf + file->file_ptr_bytes, n);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
err = -errno;
|
err = -errno;
|
||||||
|
file->wbuf_used_bytes = 0;
|
||||||
|
file->file_ptr_bytes = 0;
|
||||||
SYSERR("%s write failed, file data may be corrupt", file->fname);
|
SYSERR("%s write failed, file data may be corrupt", file->fname);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue