From 3b9aea04d23bb9e7d058953e075c38525e9baa11 Mon Sep 17 00:00:00 2001 From: Steve Hay Date: Wed, 19 Sep 2012 17:39:17 +0100 Subject: Add new warning about sleep's limitation on Windows This also came up recently in [perl #33096]. On Windows, sleep's unsigned int argument range is effectively reduced by a factor of 1000 because the emulation uses milliseconds rather than seconds. --- win32/win32.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'win32') diff --git a/win32/win32.c b/win32/win32.c index a16410fad4..8bb13694c3 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -2426,7 +2426,11 @@ win32_sleep(unsigned int t) { dTHX; /* Win32 times are in ms so *1000 in and /1000 out */ - return win32_msgwait(aTHX_ 0, NULL, t*1000, NULL)/1000; + if (t > UINT_MAX / 1000) { + Perl_ck_warner(aTHX_ packWARN(WARN_OVERFLOW), + "sleep(%lu) too large", t); + } + return win32_msgwait(aTHX_ 0, NULL, t * 1000, NULL) / 1000; } DllExport unsigned int -- cgit v1.2.1