@@ -431,7 +431,7 @@ U_CFUNC PHP_FUNCTION(intlcal_roll)
431
431
value;
432
432
zval args_a[3 ] = {0 },
433
433
*args = args_a;
434
- zend_bool bool_variant_val = (zend_bool)- 1 ;
434
+ zend_bool bool_variant_val;
435
435
CALENDAR_METHOD_INIT_VARS;
436
436
437
437
object = getThis ();
@@ -451,7 +451,8 @@ U_CFUNC PHP_FUNCTION(intlcal_roll)
451
451
== FAILURE) {
452
452
RETURN_THROWS ();
453
453
}
454
- bool_variant_val = Z_TYPE (args[1 ]) == IS_TRUE? 1 : 0 ;
454
+ /* false corresponds to rolling down, i.e. -1 */
455
+ value = Z_TYPE (args[1 ]) == IS_TRUE? 1 : -1 ;
455
456
} else if (zend_parse_method_parameters (ZEND_NUM_ARGS (), object,
456
457
" Oll" , &object, Calendar_ce_ptr, &field, &value) == FAILURE) {
457
458
RETURN_THROWS ();
@@ -462,22 +463,15 @@ U_CFUNC PHP_FUNCTION(intlcal_roll)
462
463
" intlcal_roll: invalid field" , 0 );
463
464
RETURN_FALSE;
464
465
}
465
- if (bool_variant_val == (zend_bool)-1 &&
466
- (value < INT32_MIN || value > INT32_MAX)) {
466
+ if (value < INT32_MIN || value > INT32_MAX) {
467
467
intl_error_set (NULL , U_ILLEGAL_ARGUMENT_ERROR,
468
468
" intlcal_roll: value out of bounds" , 0 );
469
469
RETURN_FALSE;
470
470
}
471
471
472
472
CALENDAR_METHOD_FETCH_OBJECT;
473
473
474
- if (bool_variant_val != (zend_bool)-1 ) {
475
- co->ucal ->roll ((UCalendarDateFields)field, (UBool)bool_variant_val,
476
- CALENDAR_ERROR_CODE (co));
477
- } else {
478
- co->ucal ->roll ((UCalendarDateFields)field, (int32_t )value,
479
- CALENDAR_ERROR_CODE (co));
480
- }
474
+ co->ucal ->roll ((UCalendarDateFields)field, (int32_t )value, CALENDAR_ERROR_CODE (co));
481
475
INTL_METHOD_CHECK_STATUS (co, " intlcal_roll: Error calling ICU Calendar::roll" );
482
476
483
477
RETURN_TRUE;
0 commit comments