Mercurial > libdvdnav.hg
comparison dvdread/dvd_reader.c @ 325:d61d2dd248b2 src
call dvdinput_close() after having successfully opened it but before exiting in case of errors; part of ogle-1778
author | nicodvb |
---|---|
date | Mon, 31 Dec 2007 17:44:05 +0000 |
parents | f59175f21e06 |
children | c1d5abe51fda |
comparison
equal
deleted
inserted
replaced
324:f59175f21e06 | 325:d61d2dd248b2 |
---|---|
229 fprintf( stderr, "libdvdread: Can't open %s for reading\n", location ); | 229 fprintf( stderr, "libdvdread: Can't open %s for reading\n", location ); |
230 return NULL; | 230 return NULL; |
231 } | 231 } |
232 | 232 |
233 dvd = (dvd_reader_t *) malloc( sizeof( dvd_reader_t ) ); | 233 dvd = (dvd_reader_t *) malloc( sizeof( dvd_reader_t ) ); |
234 if( !dvd ) return NULL; | 234 if( !dvd ) { |
235 dvdinput_close(dev); | |
236 return NULL; | |
237 } | |
235 dvd->isImageFile = 1; | 238 dvd->isImageFile = 1; |
236 dvd->dev = dev; | 239 dvd->dev = dev; |
237 dvd->path_root = 0; | 240 dvd->path_root = 0; |
238 | 241 |
239 dvd->udfcache_level = DEFAULT_UDF_CACHE_LEVEL; | 242 dvd->udfcache_level = DEFAULT_UDF_CACHE_LEVEL; |
651 } | 654 } |
652 | 655 |
653 dvd_file = (dvd_file_t *) malloc( sizeof( dvd_file_t ) ); | 656 dvd_file = (dvd_file_t *) malloc( sizeof( dvd_file_t ) ); |
654 if( !dvd_file ) { | 657 if( !dvd_file ) { |
655 fprintf( stderr, "libdvdnav:DVDOpenFilePath:dvd_file malloc failed\n" ); | 658 fprintf( stderr, "libdvdnav:DVDOpenFilePath:dvd_file malloc failed\n" ); |
659 dvdinput_close(dev); | |
656 return NULL; | 660 return NULL; |
657 } | 661 } |
658 dvd_file->dvd = dvd; | 662 dvd_file->dvd = dvd; |
659 dvd_file->lb_start = 0; | 663 dvd_file->lb_start = 0; |
660 dvd_file->seek_pos = 0; | 664 dvd_file->seek_pos = 0; |
760 return NULL; | 764 return NULL; |
761 } | 765 } |
762 | 766 |
763 if( stat( full_path, &fileinfo ) < 0 ) { | 767 if( stat( full_path, &fileinfo ) < 0 ) { |
764 fprintf( stderr, "libdvdread: Can't stat() %s.\n", filename ); | 768 fprintf( stderr, "libdvdread: Can't stat() %s.\n", filename ); |
769 dvdinput_close(dev); | |
765 free( dvd_file ); | 770 free( dvd_file ); |
766 return NULL; | 771 return NULL; |
767 } | 772 } |
768 dvd_file->title_sizes[ 0 ] = fileinfo.st_size / DVD_VIDEO_LB_LEN; | 773 dvd_file->title_sizes[ 0 ] = fileinfo.st_size / DVD_VIDEO_LB_LEN; |
769 dvd_file->title_devs[ 0 ] = dev; | 774 dvd_file->title_devs[ 0 ] = dev; |