Thu 28 Feb 2013 05:11:51 PM UTC, comment #4:
Ok I did what you said. :-)
Now I'm sure I'm running the right code. I followed your instrutions, and did not see the "this is patched code" message. However, I still got the same errors when I tried to rip the disc. I did quite a bit of digging and then applied my own patches to lib/drivers/tracks.c I just added line numbers to the "Number of tracks exceeds maximum" in tracks.c With my patch, my output is
jamie@Randy ~ $ libcdio-paranoia 1
cdparanoia III release 9.8 libcdio 0.90 x86_64-pc-linux-gnu
(C) 2001 Monty <monty@xiph.org> and Xiphophorus
(C) 2004, 2005, 2008 Rocky Bernstein <rocky@gnu.org>
Report bugs to -unavailable-
++ WARN: 265 Number of tracks exceeds maximum (100 vs. 99)
401: Invalid track number
++ WARN: 265 Number of tracks exceeds maximum (100 vs. 99)
401: Invalid track number
401: Invalid track number
Ripping from sector 0 (track 255 [0:05.26])
to sector -401 (track 0 [0:00.00])
++ WARN: 265 Number of tracks exceeds maximum (100 vs. 99)
++ WARN: 265 Number of tracks exceeds maximum (100 vs. 99)
++ WARN: 265 Number of tracks exceeds maximum (100 vs. 99)
Done.
So that would indicate a problem around line 265 in lib/drivers/tracks.c Sorry, but I tried to figure it out further, but I am a novice coder and can't see what to do next. Hope this helps! Thank you.
Here's my simple patch.
diff --git a/lib/driver/gnu_linux.c b/lib/driver/gnu_linux.c
index b6a554e..2f65db7 100644
--- a/lib/driver/gnu_linux.c
+++ b/lib/driver/gnu_linux.c
@@ -1183,6 +1183,7 @@ read_toc_linux (void *p_user_data)
u_tracks = p_env->gen.i_tracks - p_env->gen.i_first_track;
if (u_tracks > CDIO_CD_MAX_TRACKS) {
+ printf("This code is patched....\n");
cdio_log(CDIO_LOG_WARN, "Number of tracks exceeds maximum (%d vs. %d)\n",
u_tracks, CDIO_CD_MAX_TRACKS);
p_env->gen.i_tracks = CDIO_CD_MAX_TRACKS;
diff --git a/lib/driver/track.c b/lib/driver/track.c
index b4953fd..0f226ff 100644
--- a/lib/driver/track.c
+++ b/lib/driver/track.c
@@ -94,7 +94,7 @@ cdio_get_track_channels(const CdIo_t *p_cdio, track_t i_track)
return -1;
}
if (i_track > CDIO_CD_MAX_TRACKS) {
- cdio_log(CDIO_LOG_WARN, "Number of tracks exceeds maximum (%d vs. %d)\n",
+ cdio_log(CDIO_LOG_WARN, "97 Number of tracks exceeds maximum (%d vs. %d)\n",
i_track, CDIO_CD_MAX_TRACKS);
return -1;
}
@@ -262,7 +262,7 @@ cdio_get_track_lsn(const CdIo_t *p_cdio, track_t i_track)
return CDIO_INVALID_LSN;
}
if (i_track > CDIO_CD_MAX_TRACKS && i_track != CDIO_CDROM_LEADOUT_TRACK) {
- cdio_log(CDIO_LOG_WARN, "Number of tracks exceeds maximum (%d vs. %d)\n",
+ cdio_log(CDIO_LOG_WARN, "265 Number of tracks exceeds maximum (%d vs. %d)\n",
i_track, CDIO_CD_MAX_TRACKS);
return CDIO_INVALID_LSN;
}
@@ -294,7 +294,7 @@ cdio_get_track_isrc (const CdIo_t *p_cdio, track_t i_track)
}
if (i_track > CDIO_CD_MAX_TRACKS) {
- cdio_log(CDIO_LOG_WARN, "Number of tracks exceeds maximum (%d vs. %d)\n",
+ cdio_log(CDIO_LOG_WARN, "297 Number of tracks exceeds maximum (%d vs. %d)\n",
i_track, CDIO_CD_MAX_TRACKS);
|