From 9f236d48e6abf49d1e655c0d4f8c5437c33432ac Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Thu, 18 Feb 2021 21:59:09 +0100 Subject: [PATCH] Don't allow negative values for `OS.delay_usec()`/`OS.delay_msec()` This closes #46190. (cherry picked from commit 76f1f9b3c56afff2aa144468d8e33f590d6822cd) --- core/bind/core_bind.cpp | 14 ++++++++++---- core/bind/core_bind.h | 4 ++-- doc/classes/OS.xml | 4 ++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index 04e668049c4..c0406b738e8 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -942,13 +942,19 @@ uint64_t _OS::get_system_time_msecs() const { return OS::get_singleton()->get_system_time_msecs(); } -void _OS::delay_usec(uint32_t p_usec) const { - +/** This method uses a signed argument for better error reporting as it's used from the scripting API. */ +void _OS::delay_usec(int p_usec) const { + ERR_FAIL_COND_MSG( + p_usec < 0, + vformat("Can't sleep for %d microseconds. The delay provided must be greater than or equal to 0 microseconds.", p_usec)); OS::get_singleton()->delay_usec(p_usec); } -void _OS::delay_msec(uint32_t p_msec) const { - +/** This method uses a signed argument for better error reporting as it's used from the scripting API. */ +void _OS::delay_msec(int p_msec) const { + ERR_FAIL_COND_MSG( + p_msec < 0, + vformat("Can't sleep for %d milliseconds. The delay provided must be greater than or equal to 0 milliseconds.", p_msec)); OS::get_singleton()->delay_usec(int64_t(p_msec) * 1000); } diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h index fb7a276e934..b62de003030 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -308,8 +308,8 @@ public: uint64_t get_static_memory_peak_usage() const; uint64_t get_dynamic_memory_usage() const; - void delay_usec(uint32_t p_usec) const; - void delay_msec(uint32_t p_msec) const; + void delay_usec(int p_usec) const; + void delay_msec(int p_msec) const; uint32_t get_ticks_msec() const; uint64_t get_ticks_usec() const; uint32_t get_splash_tick_msec() const; diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml index 74c22cbc8c2..ce01a1a3a0b 100644 --- a/doc/classes/OS.xml +++ b/doc/classes/OS.xml @@ -56,7 +56,7 @@ - Delay execution of the current thread by [code]msec[/code] milliseconds. + Delay execution of the current thread by [code]msec[/code] milliseconds. [code]usec[/code] must be greater than or equal to [code]0[/code]. Otherwise, [method delay_msec] will do nothing and will print an error message. @@ -65,7 +65,7 @@ - Delay execution of the current thread by [code]usec[/code] microseconds. + Delay execution of the current thread by [code]usec[/code] microseconds. [code]usec[/code] must be greater than or equal to [code]0[/code]. Otherwise, [method delay_usec] will do nothing and will print an error message.