Browse Source

* WebAssembly: fixed SysUtils.sleep() with large timeouts causing incorrect time
delay, due to arithmetic overflow

Nikolay Nikolov 11 months ago
parent
commit
ccbc28dd85
1 changed files with 1 additions and 1 deletions
  1. 1 1
      rtl/wasi/sysutils.pp

+ 1 - 1
rtl/wasi/sysutils.pp

@@ -760,7 +760,7 @@ begin
   FillChar(subscription,SizeOf(subscription),0);
   FillChar(subscription,SizeOf(subscription),0);
   subscription.u.tag:=__WASI_EVENTTYPE_CLOCK;
   subscription.u.tag:=__WASI_EVENTTYPE_CLOCK;
   subscription.u.u.clock.id:=__WASI_CLOCKID_MONOTONIC;
   subscription.u.u.clock.id:=__WASI_CLOCKID_MONOTONIC;
-  subscription.u.u.clock.timeout:=MilliSeconds*1000000;
+  subscription.u.u.clock.timeout:=__wasi_timestamp_t(MilliSeconds)*1000000;
   subscription.u.u.clock.precision:=1000000;
   subscription.u.u.clock.precision:=1000000;
   subscription.u.u.clock.flags:=0;  { timeout value is relative }
   subscription.u.u.clock.flags:=0;  { timeout value is relative }
   __wasi_poll_oneoff(@subscription,@event,1,@nevents);
   __wasi_poll_oneoff(@subscription,@event,1,@nevents);