diff --git a/ext/intl/grapheme/grapheme_string.c b/ext/intl/grapheme/grapheme_string.c index 9bc7796cc35f6..7db90b45c51f4 100644 --- a/ext/intl/grapheme/grapheme_string.c +++ b/ext/intl/grapheme/grapheme_string.c @@ -1048,9 +1048,10 @@ PHP_FUNCTION(grapheme_levenshtein) goto out_collator; } - zend_long *p1, *p2, *tmp; - p1 = safe_emalloc(strlen_2 + 1, sizeof(zend_long), 0); - p2 = safe_emalloc(strlen_2 + 1, sizeof(zend_long), 0); + zend_long *pbuf, *p1, *p2, *tmp; + pbuf = safe_emalloc(strlen_2 + 1, sizeof(zend_long) * 2, 0); + p1 = pbuf; + p2 = p1 + (strlen_2 + 1); for (i2 = 0; i2 <= strlen_2; i2++) { p1[i2] = i2 * cost_ins; @@ -1098,8 +1099,7 @@ PHP_FUNCTION(grapheme_levenshtein) retval = p1[strlen_2]; RETVAL_LONG(retval); - efree(p2); - efree(p1); + efree(pbuf); out_collator: ucol_close(collator);