diff options
Diffstat (limited to 'ext/tokenizer/tokenizer.c')
| -rw-r--r-- | ext/tokenizer/tokenizer.c | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/ext/tokenizer/tokenizer.c b/ext/tokenizer/tokenizer.c index 5c7346c4ba..e4c0678ec2 100644 --- a/ext/tokenizer/tokenizer.c +++ b/ext/tokenizer/tokenizer.c @@ -361,7 +361,12 @@ static void tokenize(zval *return_value TSRMLS_DC)  			MAKE_STD_ZVAL(keyword);  			array_init(keyword);  			add_next_index_long(keyword, token_type); -			add_next_index_stringl(keyword, zendtext, zendleng, 1); +			if (token_type == T_END_HEREDOC) { +				add_next_index_stringl(keyword, Z_STRVAL(token), Z_STRLEN(token), 1); +				efree(Z_STRVAL(token)); +			} else { +				add_next_index_stringl(keyword, zendtext, zendleng, 1); +			}  			add_next_index_zval(return_value, keyword);  		} else {  			add_next_index_stringl(return_value, zendtext, zendleng, 1); @@ -369,9 +374,6 @@ static void tokenize(zval *return_value TSRMLS_DC)  		if (destroy && Z_TYPE(token) != IS_NULL) {  			zval_dtor(&token);  		} -		if (token_type == T_END_HEREDOC) { -			efree(Z_STRVAL(token)); -		}  		ZVAL_NULL(&token);  	}  } | 
