From f482092cabb82b688a8421ce5a2254e2f6aed5cf Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Tue, 25 Feb 2014 13:04:00 +0800 Subject: [PATCH] Fixed momory leak in heberv --- ext/standard/string.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ext/standard/string.c b/ext/standard/string.c index 405168ce4e..b54b18a4f6 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -3979,11 +3979,12 @@ PHP_FUNCTION(str_ireplace) static void php_hebrev(INTERNAL_FUNCTION_PARAMETERS, int convert_newlines) { char *str; - char *heb_str, *tmp, *target, *broken_str; + char *heb_str, *tmp, *target; int block_start, block_end, block_type, block_length, i; long max_chars=0; int begin, end, char_count, orig_begin; int str_len; + zend_string *broken_str; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &str, &str_len, &max_chars) == FAILURE) { return; @@ -4075,9 +4076,9 @@ static void php_hebrev(INTERNAL_FUNCTION_PARAMETERS, int convert_newlines) } while (block_end < str_len-1); - broken_str = (char *) emalloc(str_len+1); - begin=end=str_len-1; - target = broken_str; + broken_str = STR_ALLOC(str_len, 0); + begin = end = str_len-1; + target = broken_str->val; while (1) { char_count=0; @@ -4134,11 +4135,10 @@ static void php_hebrev(INTERNAL_FUNCTION_PARAMETERS, int convert_newlines) efree(heb_str); if (convert_newlines) { - php_char_to_str(broken_str, str_len,'\n', "
\n", 7, return_value); - efree(broken_str); + php_char_to_str(broken_str->val, broken_str->len,'\n', "
\n", 7, return_value); + STR_FREE(broken_str); } else { -//??? RETURN_STRINGL(broken_str, str_len, 0); - RETURN_STRINGL(broken_str, str_len); + RETURN_STR(broken_str); } } /* }}} */ -- 2.40.0