summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/device.cpp
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2017-04-21 14:33:35 -0400
committer AJR <ajrhacker@users.noreply.github.com>2017-04-21 14:52:45 -0400
commita0bf95bc4d34a8982a2129864ae457bede15cca1 (patch)
tree94e8e447546951887e85f1e1516eaee79389eaff /src/emu/device.cpp
parent9f121349908400b7412e353712147b45ee64dd67 (diff)
Defend clocks_to_attotime and attotime_to_clocks against the possibility of the device clock being 0 (nw)
Diffstat (limited to 'src/emu/device.cpp')
-rw-r--r--src/emu/device.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/emu/device.cpp b/src/emu/device.cpp
index 60772fd2369..c585f236e15 100644
--- a/src/emu/device.cpp
+++ b/src/emu/device.cpp
@@ -360,7 +360,9 @@ void device_t::calculate_derived_clock()
attotime device_t::clocks_to_attotime(u64 numclocks) const
{
- if (numclocks < m_clock)
+ if (m_clock == 0)
+ return attotime::never;
+ else if (numclocks < m_clock)
return attotime(0, numclocks * m_attoseconds_per_clock);
else
{
@@ -378,7 +380,10 @@ attotime device_t::clocks_to_attotime(u64 numclocks) const
u64 device_t::attotime_to_clocks(const attotime &duration) const
{
- return mulu_32x32(duration.seconds(), m_clock) + u64(duration.attoseconds()) / u64(m_attoseconds_per_clock);
+ if (m_clock == 0)
+ return 0;
+ else
+ return mulu_32x32(duration.seconds(), m_clock) + u64(duration.attoseconds()) / u64(m_attoseconds_per_clock);
}