diff --git a/lib/_cdio_linux.c b/lib/_cdio_linux.c index 4e308085..6ecb9367 100644 --- a/lib/_cdio_linux.c +++ b/lib/_cdio_linux.c @@ -1,5 +1,5 @@ /* - $Id: _cdio_linux.c,v 1.51 2004/06/06 10:50:55 rocky Exp $ + $Id: _cdio_linux.c,v 1.52 2004/06/06 11:25:13 rocky Exp $ Copyright (C) 2001 Herbert Valerio Riedel Copyright (C) 2002, 2003, 2004 Rocky Bernstein @@ -27,7 +27,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.51 2004/06/06 10:50:55 rocky Exp $"; +static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.52 2004/06/06 11:25:13 rocky Exp $"; #include @@ -909,6 +909,8 @@ _get_track_green_linux(void *user_data, track_t i_track) { _img_private_t *env = user_data; + if (!env->gen.toc_init) _cdio_read_toc (env) ; + if (i_track > (TOTAL_TRACKS+FIRST_TRACK_NUM) || i_track < FIRST_TRACK_NUM) return false; diff --git a/lib/_cdio_osx.c b/lib/_cdio_osx.c index eeb3e3f3..48f0c1d2 100644 --- a/lib/_cdio_osx.c +++ b/lib/_cdio_osx.c @@ -1,5 +1,5 @@ /* - $Id: _cdio_osx.c,v 1.31 2004/06/06 10:50:55 rocky Exp $ + $Id: _cdio_osx.c,v 1.32 2004/06/06 11:25:13 rocky Exp $ Copyright (C) 2003, 2004 Rocky Bernstein from vcdimager code: @@ -33,7 +33,7 @@ #include "config.h" #endif -static const char _rcsid[] = "$Id: _cdio_osx.c,v 1.31 2004/06/06 10:50:55 rocky Exp $"; +static const char _rcsid[] = "$Id: _cdio_osx.c,v 1.32 2004/06/06 11:25:13 rocky Exp $"; #include #include @@ -88,7 +88,7 @@ typedef struct { bool toc_init; /* if true, info below is valid. */ CDTOC *pTOC; int i_descriptors; - track_t i_tracks; /* number of tracks */ + track_t i_last_track; /* highest track number */ track_t i_first_track; /* first track */ lsn_t *pp_lba; @@ -486,6 +486,8 @@ _get_track_lba_osx(void *user_data, track_t i_track) { _img_private_t *env = user_data; + if (!env->toc_init) _cdio_read_toc (env) ; + if (i_track == CDIO_CDROM_LEADOUT_TRACK) i_track = env->i_last_track+1; if (i_track > env->i_last_track + 1 || i_track < env->i_first_track) { @@ -677,6 +679,8 @@ _get_track_green_osx(void *user_data, track_t i_track) _img_private_t *env = user_data; CDTrackInfo a_track; + if (!env->toc_init) _cdio_read_toc (env) ; + if ( i_track > env->i_last_track || i_track < env->i_first_track ) return false;