mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Avoid out-of-range error for negative time on MRB_TIME_T_UINT.
On platforms where `time_t` is unsigned, negative time can be a result of integer casting. Out-of-range error is too strict for those cases. This fix does not address wrong time value in `MRB_WORD_BOXING`. It will be addressed later (by introducing "big" integers).
This commit is contained in:
@@ -257,7 +257,7 @@ mrb_to_time_t(mrb_state *mrb, mrb_value obj, time_t *usec)
|
||||
mrb_int i = mrb_int(mrb, obj);
|
||||
|
||||
if ((MRB_INT_MAX > MRB_TIME_MAX && i > 0 && i > (mrb_int)MRB_TIME_MAX) ||
|
||||
(MRB_TIME_MIN > MRB_INT_MIN && MRB_TIME_MIN > i)) {
|
||||
(!MRB_TIME_T_UINT && MRB_TIME_MIN > MRB_INT_MIN && MRB_TIME_MIN > i)) {
|
||||
goto out_of_range;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user