From 2d0131da643d1f8da16816c672b7e29defcf2a2d Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Sat, 26 Apr 2008 18:43:55 +0000 Subject: [PATCH] Fix a division-by-zero when +RTS -V0 is given In delayzh_fast we act as if tickInterval was 50, not 0. --- rts/PrimOps.cmm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rts/PrimOps.cmm b/rts/PrimOps.cmm index 6c3593e..c3ab788 100644 --- a/rts/PrimOps.cmm +++ b/rts/PrimOps.cmm @@ -2118,7 +2118,11 @@ delayzh_fast W_ time; W_ divisor; (time) = foreign "C" getourtimeofday() [R1]; - divisor = TO_W_(RtsFlags_MiscFlags_tickInterval(RtsFlags))*1000; + divisor = TO_W_(RtsFlags_MiscFlags_tickInterval(RtsFlags)); + if (divisor == 0) { + divisor = 50; + } + divisor = divisor * 1000; target = ((R1 + divisor - 1) / divisor) /* divide rounding up */ + time + 1; /* Add 1 as getourtimeofday rounds down */ StgTSO_block_info(CurrentTSO) = target; -- 1.7.10.4