@@ -2544,16 +2544,19 @@ static int php_date_initialize_from_hash(zval **return_value, php_date_obj **dat
2544
2544
if (zend_hash_find (myht , "timezone_type" , 14 , (void * * ) & z_timezone_type ) == SUCCESS ) {
2545
2545
convert_to_long (* z_timezone_type );
2546
2546
if (zend_hash_find (myht , "timezone" , 9 , (void * * ) & z_timezone ) == SUCCESS ) {
2547
+ zend_error_handling error_handling ;
2548
+
2549
+ zend_replace_error_handling (EH_THROW , NULL , & error_handling TSRMLS_CC );
2547
2550
convert_to_string (* z_timezone );
2548
2551
2549
2552
switch (Z_LVAL_PP (z_timezone_type )) {
2550
2553
case TIMELIB_ZONETYPE_OFFSET :
2551
2554
case TIMELIB_ZONETYPE_ABBR : {
2552
2555
char * tmp = emalloc (Z_STRLEN_PP (z_date ) + Z_STRLEN_PP (z_timezone ) + 2 );
2553
2556
snprintf (tmp , Z_STRLEN_PP (z_date ) + Z_STRLEN_PP (z_timezone ) + 2 , "%s %s" , Z_STRVAL_PP (z_date ), Z_STRVAL_PP (z_timezone ));
2554
- php_date_initialize (* dateobj , tmp , Z_STRLEN_PP (z_date ) + Z_STRLEN_PP (z_timezone ) + 1 , NULL , NULL , 0 TSRMLS_CC );
2557
+ php_date_initialize (* dateobj , tmp , Z_STRLEN_PP (z_date ) + Z_STRLEN_PP (z_timezone ) + 1 , NULL , NULL , 1 TSRMLS_CC );
2555
2558
efree (tmp );
2556
- return 1 ;
2559
+ break ;
2557
2560
}
2558
2561
2559
2562
case TIMELIB_ZONETYPE_ID :
@@ -2567,10 +2570,15 @@ static int php_date_initialize_from_hash(zval **return_value, php_date_obj **dat
2567
2570
tzobj -> tzi .tz = tzi ;
2568
2571
tzobj -> initialized = 1 ;
2569
2572
2570
- php_date_initialize (* dateobj , Z_STRVAL_PP (z_date ), Z_STRLEN_PP (z_date ), NULL , tmp_obj , 0 TSRMLS_CC );
2573
+ php_date_initialize (* dateobj , Z_STRVAL_PP (z_date ), Z_STRLEN_PP (z_date ), NULL , tmp_obj , 1 TSRMLS_CC );
2571
2574
zval_ptr_dtor (& tmp_obj );
2572
- return 1 ;
2575
+ break ;
2576
+ default :
2577
+ zend_restore_error_handling (& error_handling TSRMLS_CC );
2578
+ return 0 ;
2573
2579
}
2580
+ zend_restore_error_handling (& error_handling TSRMLS_CC );
2581
+ return 1 ;
2574
2582
}
2575
2583
}
2576
2584
}
0 commit comments