diff options
author | 卜部昌平 <shyouhei@ruby-lang.org> | 2019-12-03 11:02:10 +0900 |
---|---|---|
committer | 卜部昌平 <shyouhei@ruby-lang.org> | 2019-12-26 20:45:12 +0900 |
commit | 33e9601938a79dae149caa88ff1bc06d376dd376 (patch) | |
tree | e241a1b92bd88bc809a0d9866d0a235c09a0bc6a /thread.c | |
parent | bf53d6c7d19f877c821901b3288d7f80955ffbb7 (diff) |
TIMESPEC_SEC_MAX might be bigger than 53 bits.
The same as 41bc766763dba63ae2529f2f9070b8e26399745c. Read that commit
for what is happening.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/2711
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -1192,11 +1192,21 @@ thread_value(VALUE self) #define TIMESPEC_SEC_MAX TIMET_MAX #define TIMESPEC_SEC_MIN TIMET_MIN +COMPILER_WARNING_PUSH +#if __has_warning("-Wimplicit-int-float-conversion") +COMPILER_WARNING_IGNORED(-Wimplicit-int-float-conversion) +#elif defined(_MSC_VER) +/* C4305: 'initializing': truncation from '__int64' to 'const double' */ +COMPILER_WARNING_IGNORED(4305) +#endif +static const double TIMESPEC_SEC_MAX_as_doube = TIMESPEC_SEC_MAX; +COMPILER_WARNING_POP + static rb_hrtime_t * double2hrtime(rb_hrtime_t *hrt, double d) { /* assume timespec.tv_sec has same signedness as time_t */ - const double TIMESPEC_SEC_MAX_PLUS_ONE = 2.0 * (TIMESPEC_SEC_MAX / 2 + 1.0); + const double TIMESPEC_SEC_MAX_PLUS_ONE = 2.0 * (TIMESPEC_SEC_MAX_as_doube / 2.0 + 1.0); if (TIMESPEC_SEC_MAX_PLUS_ONE <= d) { return NULL; |