From: Xinchen Hui Date: Thu, 6 Mar 2014 11:00:51 +0000 (+0800) Subject: Fixed memory leak in ext/standard/tests/strings/str_word_count.php X-Git-Tag: POST_PHPNG_MERGE~412^2~399 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=11166882c05d9d194c31d6fc320260922af9567c;p=php Fixed memory leak in ext/standard/tests/strings/str_word_count.php --- diff --git a/ext/standard/string.c b/ext/standard/string.c index 65522cc36f..c2acc16d14 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -5346,7 +5346,7 @@ PHP_FUNCTION(str_shuffle) */ PHP_FUNCTION(str_word_count) { - char *buf, *str, *char_list = NULL, *p, *e, *s, ch[256]; + char c, *str, *char_list = NULL, *p, *e, *s, ch[256]; int str_len, char_list_len = 0, word_count = 0; long type = 0; @@ -5398,12 +5398,16 @@ PHP_FUNCTION(str_word_count) switch (type) { case 1: - buf = estrndup(s, (p-s)); - add_next_index_stringl(return_value, buf, (p-s), 0); + c = s[p - s]; + s[p - s] = '\0'; + add_next_index_stringl(return_value, s, p - s, 1); + s[p - s] = c; break; case 2: - buf = estrndup(s, (p-s)); - add_index_stringl(return_value, (s - str), buf, p-s, 0); + c = s[p - s]; + s[p - s] = '\0'; + add_index_stringl(return_value, (s - str), s, p - s, 1); + s[p - s] = c; break; default: word_count++;