diff --git a/ext/standard/string.c b/ext/standard/string.c
index 405168ce4e0..b54b18a4f68 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);
}
}
/* }}} */