From eed4e28a19343357ef8be71cd4093241543f4d17 Mon Sep 17 00:00:00 2001 From: rocky Date: Sun, 6 Jun 2004 11:25:13 +0000 Subject: [PATCH] Back off of testing for unread TOC. Probably a good idea to do lazy TOC reading. --- lib/_cdio_linux.c | 6 ++++-- lib/_cdio_osx.c | 10 +++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) 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;