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>
This commit is contained in:
		
							parent
							
								
									129d737150
								
							
						
					
					
						commit
						f2c49da9ac
					
				@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user