--- embedaddon/php/ext/intl/grapheme/grapheme_string.c 2012/02/21 23:47:56 1.1.1.1 +++ embedaddon/php/ext/intl/grapheme/grapheme_string.c 2013/07/22 01:31:52 1.1.1.3 @@ -554,13 +554,17 @@ PHP_FUNCTION(grapheme_substr) length += iter_val; } - if ( UBRK_DONE == sub_str_end_pos && length < 0) { + if ( UBRK_DONE == sub_str_end_pos) { + if(length < 0) { - intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, "grapheme_substr: length not contained in string", 1 TSRMLS_CC ); + intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, "grapheme_substr: length not contained in string", 1 TSRMLS_CC ); - efree(ustr); - ubrk_close(bi); - RETURN_FALSE; + efree(ustr); + ubrk_close(bi); + RETURN_FALSE; + } else { + sub_str_end_pos = ustr_len; + } } sub_str = NULL; @@ -818,6 +822,7 @@ PHP_FUNCTION(grapheme_extract) } else { /* initialize next */ + zval_dtor(next); ZVAL_LONG(next, lstart); } }