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;