@@ -711,15 +711,10 @@ PHP_FUNCTION(grapheme_extract)
711
711
}
712
712
713
713
if ( NULL != next ) {
714
- if ( !Z_ISREF_P (next ) ) {
715
- intl_error_set ( NULL , U_ILLEGAL_ARGUMENT_ERROR ,
716
- "grapheme_extract: 'next' was not passed by reference" , 0 );
717
- RETURN_FALSE ;
718
- } else {
719
- ZVAL_DEREF (next );
720
- /* initialize next */
721
- zval_ptr_dtor (next );
722
- ZVAL_LONG (next , lstart );
714
+ ZEND_ASSERT (Z_ISREF_P (next ));
715
+ ZEND_TRY_ASSIGN_REF_LONG (next , lstart );
716
+ if (UNEXPECTED (EG (exception ))) {
717
+ RETURN_THROWS ();
723
718
}
724
719
}
725
720
@@ -776,7 +771,7 @@ PHP_FUNCTION(grapheme_extract)
776
771
if ( -1 != grapheme_ascii_check ((unsigned char * )pstr , MIN (size + 1 , str_len )) ) {
777
772
size_t nsize = MIN (size , str_len );
778
773
if ( NULL != next ) {
779
- ZVAL_LONG (next , start + nsize );
774
+ ZEND_TRY_ASSIGN_REF_LONG (next , start + nsize );
780
775
}
781
776
RETURN_STRINGL (pstr , nsize );
782
777
}
@@ -810,7 +805,7 @@ PHP_FUNCTION(grapheme_extract)
810
805
ubrk_close (bi );
811
806
812
807
if ( NULL != next ) {
813
- ZVAL_LONG (next , start + ret_pos );
808
+ ZEND_TRY_ASSIGN_REF_LONG (next , start + ret_pos );
814
809
}
815
810
816
811
RETURN_STRINGL (((char * )pstr ), ret_pos );
0 commit comments