From 0a9199a13b1aec60f38818b23c49ba0674b6047d Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sat, 9 Apr 2022 17:51:43 +0100 Subject: [PATCH] dvd-sector-copy.c (main): Use `last' to track final event for fixup. The `start' variable was doing double-duty, resulting in a possibly erroneous value if the last event is `EV_WRITE', and a possibly erroneous count of sectors. Use `last' instead, because nothing else is using this. --- dvd-sector-copy.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dvd-sector-copy.c b/dvd-sector-copy.c index 27ec397..4a5d0bc 100644 --- a/dvd-sector-copy.c +++ b/dvd-sector-copy.c @@ -1115,19 +1115,19 @@ int main(int argc, char *argv[]) #ifdef DEBUG dump_eventq("initial"); #endif - for (i = 0, f &= ~f_write, start = 0; i < eventq.n; i++) { + for (i = 0, f &= ~f_write, start = last = 0; i < eventq.n; i++) { ev = &eventq.v[i]; if (ev->ev == EV_WRITE) { start = ev->pos; f |= f_write; } if (ev->pos >= limit) break; if (ev->ev == EV_STOP) { nsectors += ev->pos - start; f &= ~f_write; } - if (f&f_fixup) start = ev->pos; + if (f&f_fixup) last = ev->pos; } eventq.n = i; #ifdef DEBUG dump_eventq("trimmed"); #endif if (f&f_fixup) { - put_event(EV_WRITE, 0, start); + put_event(EV_WRITE, 0, last); f |= f_write; } if (f&f_write) { -- 2.11.0