@@ -427,9 +427,18 @@ U_CFUNC PHP_METHOD(IntlCalendar, setDate)
427427 RETURN_THROWS ();
428428 }
429429
430- ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE (year, 1 );
431- ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE (month, 2 );
432- ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE (day, 3 );
430+ if (UNEXPECTED (year < INT32_MIN || year > INT32_MAX)) {
431+ zend_argument_value_error (1 , " must be between %d and %d" , INT32_MIN, INT32_MAX);
432+ RETURN_THROWS ();
433+ }
434+ if (UNEXPECTED (month < INT32_MIN || month > INT32_MAX)) {
435+ zend_argument_value_error (2 , " must be between %d and %d" , INT32_MIN, INT32_MAX);
436+ RETURN_THROWS ();
437+ }
438+ if (UNEXPECTED (day < INT32_MIN || day > INT32_MAX)) {
439+ zend_argument_value_error (3 , " must be between %d and %d" , INT32_MIN, INT32_MAX);
440+ RETURN_THROWS ();
441+ }
433442
434443 CALENDAR_METHOD_FETCH_OBJECT;
435444
@@ -450,18 +459,36 @@ U_CFUNC PHP_METHOD(IntlCalendar, setDateTime)
450459 RETURN_THROWS ();
451460 }
452461
453- ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE (year, 1 );
454- ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE (month, 2 );
455- ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE (day, 3 );
456- ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE (hour, 4 );
457- ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE (minute, 5 );
462+ if (UNEXPECTED (year < INT32_MIN || year > INT32_MAX)) {
463+ zend_argument_value_error (1 , " must be between %d and %d" , INT32_MIN, INT32_MAX);
464+ RETURN_THROWS ();
465+ }
466+ if (UNEXPECTED (month < INT32_MIN || month > INT32_MAX)) {
467+ zend_argument_value_error (2 , " must be between %d and %d" , INT32_MIN, INT32_MAX);
468+ RETURN_THROWS ();
469+ }
470+ if (UNEXPECTED (day < INT32_MIN || day > INT32_MAX)) {
471+ zend_argument_value_error (3 , " must be between %d and %d" , INT32_MIN, INT32_MAX);
472+ RETURN_THROWS ();
473+ }
474+ if (UNEXPECTED (hour < INT32_MIN || hour > INT32_MAX)) {
475+ zend_argument_value_error (4 , " must be between %d and %d" , INT32_MIN, INT32_MAX);
476+ RETURN_THROWS ();
477+ }
478+ if (UNEXPECTED (minute < INT32_MIN || minute > INT32_MAX)) {
479+ zend_argument_value_error (5 , " must be between %d and %d" , INT32_MIN, INT32_MAX);
480+ RETURN_THROWS ();
481+ }
458482
459483 CALENDAR_METHOD_FETCH_OBJECT;
460484
461485 if (second_is_null) {
462486 co->ucal ->set ((int32_t ) year, (int32_t ) month, (int32_t ) day, (int32_t ) hour, (int32_t ) minute);
463487 } else {
464- ZEND_VALUE_ERROR_OUT_OF_BOUND_VALUE (second, 6 );
488+ if (UNEXPECTED (second < INT32_MIN || second > INT32_MAX)) {
489+ zend_argument_value_error (6 , " must be between %d and %d" , INT32_MIN, INT32_MAX);
490+ RETURN_THROWS ();
491+ }
465492 co->ucal ->set ((int32_t ) year, (int32_t ) month, (int32_t ) day, (int32_t ) hour, (int32_t ) minute, (int32_t ) second);
466493 }
467494}
0 commit comments