Skip to content

Commit 4531bb9

Browse files
committed
fix(Lib): time.sleep: add audit; fix 1 ms offset
1 parent 7fc1a2e commit 4531bb9

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/pylib/Lib/time_impl/sleep_impl.nim

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11

2-
template sleep_neg_raise(s) =
2+
import ../sys_impl/auditImpl as sys
3+
proc sleep_neg_raise_or2ms(s: int|float): int =
34
# beaware: before Nim#23734, (in 2.1.1),
45
# Nim's std/os sleep will deadloop in Windows if `milsecs` is negative.
56
if s < 0:
67
raise newException(ValueError, "sleep length must be non-negative")
8+
let ms = s*1000
9+
when s is float: int(ms+0.5)
10+
else: ms
11+
712
when not defined(js):
813
import std/os as nos
914
else:
@@ -22,7 +27,8 @@ else:
2227
""".}
2328
template sleep*(s: int|float) =
2429
## raises ValueError if s < 0
25-
bind sleep, sleep_neg_raise
26-
let ss = s # prevent `s` being eval-ed twice.
27-
sleep_neg_raise(ss)
28-
sleep(milsecs=int(1000 * ss)) # param name based overload
30+
bind sleep, sleep_neg_raise_or2ms, audit
31+
sys.audit("time.sleep", s)
32+
# also prevent `s` being eval-ed twice.
33+
let ms = sleep_neg_raise_or2ms(s)
34+
sleep(milsecs=ms) # param name based overload

0 commit comments

Comments
 (0)