summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2021-01-25 09:50:20 +0100
committer Olivier Galibert <galibert@pobox.com>2021-01-25 09:50:50 +0100
commitcc03eb3b03248632dbc6d0c80762d6fe0b837031 (patch)
tree4471da3ed99f854b0c4d134c4fa22af19560f428
parenta77e3cc566c068cde557531c721935c92f0a931c (diff)
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.
-rw-r--r--src/devices/imagedev/floppy.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/devices/imagedev/floppy.cpp b/src/devices/imagedev/floppy.cpp
index c0b459de665..6d87751280e 100644
--- a/src/devices/imagedev/floppy.cpp
+++ b/src/devices/imagedev/floppy.cpp
@@ -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);