From: Ilia Alshanetsky Date: Sat, 29 Nov 2003 19:05:59 +0000 (+0000) Subject: MFH: Fixed bug #26463 (Incorrect handling of semicolons after heredoc) X-Git-Tag: php-4.3.5RC1~137 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e0f235787c26fafa5efb90fd123dff7b7bc54a47;p=php MFH: Fixed bug #26463 (Incorrect handling of semicolons after heredoc) --- diff --git a/ext/tokenizer/tests/bug26463.phpt b/ext/tokenizer/tests/bug26463.phpt index d1e75b4e03..6d795a829d 100644 --- a/ext/tokenizer/tests/bug26463.phpt +++ b/ext/tokenizer/tests/bug26463.phpt @@ -18,7 +18,7 @@ array(17) { [0]=> array(2) { [0]=> - int(363) + int(353) [1]=> string(6) " array(2) { [0]=> - int(307) + int(306) [1]=> string(2) "$x" } @@ -35,7 +35,7 @@ array(17) { [3]=> array(2) { [0]=> - int(367) + int(357) [1]=> string(6) "<<
array(2) { [0]=> - int(305) + int(304) [1]=> string(13) "jhdsjkfhjdsh " @@ -51,7 +51,7 @@ array(17) { [5]=> array(2) { [0]=> - int(368) + int(358) [1]=> string(2) "DD" } @@ -60,7 +60,7 @@ array(17) { [7]=> array(2) { [0]=> - int(313) + int(312) [1]=> string(2) """" } @@ -69,7 +69,7 @@ array(17) { [9]=> array(2) { [0]=> - int(366) + int(356) [1]=> string(1) " " @@ -77,7 +77,7 @@ array(17) { [10]=> array(2) { [0]=> - int(307) + int(306) [1]=> string(2) "$a" } @@ -86,7 +86,7 @@ array(17) { [12]=> array(2) { [0]=> - int(367) + int(357) [1]=> string(8) "<< array(2) { [0]=> - int(305) + int(304) [1]=> string(13) "jhdsjkfhjdsh " @@ -102,7 +102,7 @@ array(17) { [14]=> array(2) { [0]=> - int(368) + int(358) [1]=> string(4) "DDDD" } @@ -111,7 +111,7 @@ array(17) { [16]=> array(2) { [0]=> - int(365) + int(355) [1]=> string(2) "?>" } diff --git a/ext/tokenizer/tokenizer.c b/ext/tokenizer/tokenizer.c index 463aedd3f5..c640a99f71 100644 --- a/ext/tokenizer/tokenizer.c +++ b/ext/tokenizer/tokenizer.c @@ -346,7 +346,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); @@ -354,9 +359,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); } }