From: Mark Wooding Date: Fri, 18 Feb 2022 22:59:00 +0000 (+0000) Subject: dvd-sector-copy.c: Don't dump fake-bad-block search if no bad blocks. X-Git-Url: https://git.distorted.org.uk/~mdw/dvdrip/commitdiff_plain/6e7426fe2b39cfc58aec52decefd41f6b8df5241?ds=sidebyside dvd-sector-copy.c: Don't dump fake-bad-block search if no bad blocks. --- diff --git a/dvd-sector-copy.c b/dvd-sector-copy.c index 98ee8ec..5caac23 100644 --- a/dvd-sector-copy.c +++ b/dvd-sector-copy.c @@ -409,30 +409,31 @@ static ssize_t read_sectors(secaddr pos, void *buf, secaddr want) struct badblock *bad, *best; unsigned char *p = buf; - best = 0; lo = 0; hi = badblocks.n; + if (badblocks.n) { + best = 0; lo = 0; hi = badblocks.n; #ifdef DEBUG - clear_progress(); - printf(";; searching badblocks for %"PRIuSEC" .. %"PRIuSEC"\n", - pos, pos + want); + debug_clear_progress(); + printf(";; searching badblocks for %"PRIuSEC" .. %"PRIuSEC"\n", + pos, pos + want); #endif - while (lo < hi) { - mid = lo + (hi - lo)/2; bad = &badblocks.v[mid]; + while (lo < hi) { + mid = lo + (hi - lo)/2; bad = &badblocks.v[mid]; #ifdef DEBUG - printf(";; try %zu (%"PRIuSEC" .. %"PRIuSEC")... ", - mid, bad->start, bad->end); + printf(";; try %zu (%"PRIuSEC" .. %"PRIuSEC")... ", + mid, bad->start, bad->end); #endif - if (pos < bad->start) { D( printf("high\n"); ) best = bad; hi = mid; } - else if (pos >= bad->end) { D( printf("low\n"); ) lo = mid + 1; } - else { D( printf("match!\n"); ) errno = EIO; return (-1); } - } + if (pos < bad->start) { D( printf("high\n"); ) best = bad; hi = mid; } + else if (pos >= bad->end) { D( printf("low\n"); ) lo = mid + 1; } + else { D( printf("match!\n"); ) errno = EIO; return (-1); } + } #ifdef DEBUG - if (best) - printf(";; next is %"PRIuSEC" .. %"PRIuSEC"\n", - best->start, best->end); + if (best) + printf(";; next is %"PRIuSEC" .. %"PRIuSEC"\n", + best->start, best->end); #endif - if (best && pos + want > best->start) - { want = best->start - pos; fakeerr = EIO; } - + if (best && pos + want > best->start) + { want = best->start - pos; fakeerr = EIO; } + } done = 0; while (want) { if (vob)