summaryrefslogtreecommitdiff
path: root/ext/tokenizer/tokenizer.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/tokenizer/tokenizer.c')
-rw-r--r--ext/tokenizer/tokenizer.c10
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);
}
}