floppy: When the floppy head stays on an unformatted track from more than an hour and ten minutes and reading happens then interval_index*2+1 overflows. Wow. Found and tracked down by Colin Howell, with much thanks.

This commit is contained in:
Olivier Galibert 2021-01-25 09:50:20 +01:00
parent a77e3cc566
commit cc03eb3b03

View File

@ -932,7 +932,7 @@ attotime floppy_image_device::get_next_transition(const attotime &from_when)
return cache_end_time;
// Put a flux transition in the middle of a 4us interval with a 50% probability
int interval_index = (from_when - cache_weak_start).as_ticks(250000);
int64_t interval_index = (from_when - cache_weak_start).as_ticks(250000);
if(interval_index < 0)
interval_index = 0;
attotime weak_time = cache_weak_start + attotime::from_ticks(interval_index*2+1, 500000);