Browse Source

dshow: fix return code when opening device

Successfully opening a device altered the ret variable, making the function
not cleanup properly and return an incorrect value for errors that happened
afterwards.

Reviewed-by: Stefano Sabatini <stefasab@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n1.1
Ramiro Polla Michael Niedermayer 12 years ago
parent
commit
f2c49da9ac
1 changed files with 8 additions and 10 deletions
  1. +8
    -10
      libavdevice/dshow.c

+ 8
- 10
libavdevice/dshow.c View File

@@ -929,20 +929,18 @@ static int dshow_read_header(AVFormatContext *avctx)
}

if (ctx->device_name[VideoDevice]) {
ret = dshow_open_device(avctx, devenum, VideoDevice);
if (ret < 0)
goto error;
ret = dshow_add_device(avctx, VideoDevice);
if (ret < 0)
if ((r = dshow_open_device(avctx, devenum, VideoDevice)) < 0 ||
(r = dshow_add_device(avctx, VideoDevice)) < 0) {
ret = r;
goto error;
}
}
if (ctx->device_name[AudioDevice]) {
ret = dshow_open_device(avctx, devenum, AudioDevice);
if (ret < 0)
goto error;
ret = dshow_add_device(avctx, AudioDevice);
if (ret < 0)
if ((r = dshow_open_device(avctx, devenum, AudioDevice)) < 0 ||
(r = dshow_add_device(avctx, AudioDevice)) < 0) {
ret = r;
goto error;
}
}

ctx->mutex = CreateMutex(NULL, 0, NULL);


Loading…
Cancel
Save