mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Include the invalid value in invalid_utc_offset error
This commit is contained in:
parent
b45fe48fbb
commit
ec4ecb6d6d
Notes:
git
2021-09-18 18:04:23 +09:00
1 changed files with 17 additions and 15 deletions
32
time.c
32
time.c
|
@ -2071,14 +2071,13 @@ maybe_tzobj_p(VALUE obj)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
NORETURN(static void invalid_utc_offset(void));
|
||||
NORETURN(static void invalid_utc_offset(VALUE));
|
||||
static void
|
||||
invalid_utc_offset(void)
|
||||
invalid_utc_offset(VALUE zone)
|
||||
{
|
||||
static const char message[] = "\"+HH:MM\", \"-HH:MM\", \"UTC\" "
|
||||
"or \"A\"..\"I\",\"K\"..\"Z\" expected for utc_offset";
|
||||
VALUE str = rb_usascii_str_new_static(message, sizeof(message)-1);
|
||||
rb_exc_raise(rb_exc_new_str(rb_eArgError, str));
|
||||
rb_raise(rb_eArgError, "\"+HH:MM\", \"-HH:MM\", \"UTC\" or "
|
||||
"\"A\"..\"I\",\"K\"..\"Z\" expected for utc_offset: %"PRIsVALUE,
|
||||
zone);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -2346,7 +2345,7 @@ time_init_args(rb_execution_context_t *ec, VALUE time, VALUE year, VALUE mon, VA
|
|||
|
||||
vtm.isdst = VTM_ISDST_INITVAL;
|
||||
vtm.utc_offset = Qnil;
|
||||
VALUE arg = zone;
|
||||
const VALUE arg = zone;
|
||||
if (!NIL_P(arg)) {
|
||||
zone = Qnil;
|
||||
if (arg == ID2SYM(rb_intern("dst")))
|
||||
|
@ -2358,7 +2357,7 @@ time_init_args(rb_execution_context_t *ec, VALUE time, VALUE year, VALUE mon, VA
|
|||
else if (!NIL_P(utc = utc_offset_arg(arg)))
|
||||
vtm.utc_offset = utc == UTC_ZONE ? INT2FIX(0) : utc;
|
||||
else if (NIL_P(zone = find_timezone(time, arg)))
|
||||
invalid_utc_offset();
|
||||
invalid_utc_offset(arg);
|
||||
}
|
||||
|
||||
validate_vtm(&vtm);
|
||||
|
@ -2376,7 +2375,7 @@ time_init_args(rb_execution_context_t *ec, VALUE time, VALUE year, VALUE mon, VA
|
|||
}
|
||||
else if (NIL_P(vtm.utc_offset = utc_offset_arg(zone))) {
|
||||
if (NIL_P(zone = find_timezone(time, zone)) || !zone_timelocal(zone, time))
|
||||
invalid_utc_offset();
|
||||
invalid_utc_offset(arg);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2509,9 +2508,10 @@ rb_time_num_new(VALUE timev, VALUE off)
|
|||
if (zone_timelocal(zone, time)) return time;
|
||||
}
|
||||
if (NIL_P(off = utc_offset_arg(off))) {
|
||||
if (NIL_P(zone = find_timezone(time, zone))) invalid_utc_offset();
|
||||
off = zone;
|
||||
if (NIL_P(zone = find_timezone(time, off))) invalid_utc_offset(off);
|
||||
time_gmtime(time);
|
||||
if (!zone_timelocal(zone, time)) invalid_utc_offset();
|
||||
if (!zone_timelocal(zone, time)) invalid_utc_offset(off);
|
||||
return time;
|
||||
}
|
||||
else if (off == UTC_ZONE) {
|
||||
|
@ -3751,8 +3751,9 @@ time_zonelocal(VALUE time, VALUE off)
|
|||
if (zone_localtime(zone, time)) return time;
|
||||
|
||||
if (NIL_P(off = utc_offset_arg(off))) {
|
||||
if (NIL_P(zone = find_timezone(time, zone))) invalid_utc_offset();
|
||||
if (!zone_localtime(zone, time)) invalid_utc_offset();
|
||||
off = zone;
|
||||
if (NIL_P(zone = find_timezone(time, off))) invalid_utc_offset(off);
|
||||
if (!zone_localtime(zone, time)) invalid_utc_offset(off);
|
||||
return time;
|
||||
}
|
||||
else if (off == UTC_ZONE) {
|
||||
|
@ -3916,9 +3917,10 @@ time_getlocaltime(int argc, VALUE *argv, VALUE time)
|
|||
}
|
||||
|
||||
if (NIL_P(off = utc_offset_arg(off))) {
|
||||
if (NIL_P(zone = find_timezone(time, zone))) invalid_utc_offset();
|
||||
off = zone;
|
||||
if (NIL_P(zone = find_timezone(time, off))) invalid_utc_offset(off);
|
||||
time = time_dup(time);
|
||||
if (!zone_localtime(zone, time)) invalid_utc_offset();
|
||||
if (!zone_localtime(zone, time)) invalid_utc_offset(off);
|
||||
return time;
|
||||
}
|
||||
else if (off == UTC_ZONE) {
|
||||
|
|
Loading…
Add table
Reference in a new issue