# HG changeset patch # User nicodvb # Date 1199123045 0 # Node ID d61d2dd248b24859687378408ed35991e33c8ffa # Parent f59175f21e06ea50a8e29c6d931ec91f7b03ca5b call dvdinput_close() after having successfully opened it but before exiting in case of errors; part of ogle-1778 diff -r f59175f21e06 -r d61d2dd248b2 dvdread/dvd_reader.c --- a/dvdread/dvd_reader.c Mon Dec 31 17:25:55 2007 +0000 +++ b/dvdread/dvd_reader.c Mon Dec 31 17:44:05 2007 +0000 @@ -231,7 +231,10 @@ } dvd = (dvd_reader_t *) malloc( sizeof( dvd_reader_t ) ); - if( !dvd ) return NULL; + if( !dvd ) { + dvdinput_close(dev); + return NULL; + } dvd->isImageFile = 1; dvd->dev = dev; dvd->path_root = 0; @@ -653,6 +656,7 @@ dvd_file = (dvd_file_t *) malloc( sizeof( dvd_file_t ) ); if( !dvd_file ) { fprintf( stderr, "libdvdnav:DVDOpenFilePath:dvd_file malloc failed\n" ); + dvdinput_close(dev); return NULL; } dvd_file->dvd = dvd; @@ -762,6 +766,7 @@ if( stat( full_path, &fileinfo ) < 0 ) { fprintf( stderr, "libdvdread: Can't stat() %s.\n", filename ); + dvdinput_close(dev); free( dvd_file ); return NULL; }