@@ -711,15 +711,10 @@ PHP_FUNCTION(grapheme_extract)
711711 }
712712
713713 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 ();
723718 }
724719 }
725720
@@ -776,7 +771,7 @@ PHP_FUNCTION(grapheme_extract)
776771 if ( -1 != grapheme_ascii_check ((unsigned char * )pstr , MIN (size + 1 , str_len )) ) {
777772 size_t nsize = MIN (size , str_len );
778773 if ( NULL != next ) {
779- ZVAL_LONG (next , start + nsize );
774+ ZEND_TRY_ASSIGN_REF_LONG (next , start + nsize );
780775 }
781776 RETURN_STRINGL (pstr , nsize );
782777 }
@@ -810,7 +805,7 @@ PHP_FUNCTION(grapheme_extract)
810805 ubrk_close (bi );
811806
812807 if ( NULL != next ) {
813- ZVAL_LONG (next , start + ret_pos );
808+ ZEND_TRY_ASSIGN_REF_LONG (next , start + ret_pos );
814809 }
815810
816811 RETURN_STRINGL (((char * )pstr ), ret_pos );
0 commit comments