File tree Expand file tree Collapse file tree 3 files changed +54
-47
lines changed Expand file tree Collapse file tree 3 files changed +54
-47
lines changed Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ Bug #54089 (token_get_all() does not stop after __halt_compiler)
3
+ --SKIPIF--
4
+ <?php if (!extension_loaded ("tokenizer " )) print "skip " ; ?>
5
+ --FILE--
6
+ <?php
7
+ $ code = "<?php __halt_compiler(); \x01?> \x02" ;
8
+ $ tokens = token_get_all ($ code );
9
+
10
+ var_dump ($ tokens );
11
+
12
+ $ code = '' ;
13
+ foreach ($ tokens as $ t )
14
+ {
15
+ $ code .= isset ($ t [1 ]) ? $ t [1 ] : $ t ;
16
+ }
17
+ var_dump ($ code );
18
+ ?>
19
+ --EXPECTF--
20
+ array(2) {
21
+ [0]=>
22
+ array(3) {
23
+ [0]=>
24
+ int(%d)
25
+ [1]=>
26
+ string(6) "<?php "
27
+ [2]=>
28
+ int(1)
29
+ }
30
+ [1]=>
31
+ array(3) {
32
+ [0]=>
33
+ int(%d)
34
+ [1]=>
35
+ string(15) " __halt_compiler"
36
+ [2 ]=>
37
+ int(1 )
38
+ }
39
+ }
40
+ string(21 ) "<?php __halt_compiler"
Original file line number Diff line number Diff line change @@ -55,7 +55,7 @@ echo "Done"
55
55
?>
56
56
--EXPECTF--
57
57
*** Testing token_get_all() : with different function constructs ***
58
- array(142 ) {
58
+ array(135 ) {
59
59
[0]=>
60
60
array(3) {
61
61
[0]=>
@@ -114,11 +114,11 @@ array(142) {
114
114
[9 ]=>
115
115
array (3 ) {
116
116
[0 ]=>
117
- int(262 )
117
+ int(%d )
118
118
[1 ]=>
119
119
string(7 ) "include "
120
120
[2 ]=>
121
- int(%d )
121
+ int(3 )
122
122
}
123
123
[10 ]=>
124
124
string(1 ) "( "
@@ -129,7 +129,7 @@ array(142) {
129
129
[1 ]=>
130
130
string(13 ) "" addfile.php""
131
131
[2 ]=>
132
- int(%d )
132
+ int(3 )
133
133
}
134
134
[12 ]=>
135
135
string(1 ) ") "
@@ -143,12 +143,12 @@ array(142) {
143
143
string(1 ) "
144
144
"
145
145
[2 ]=>
146
- int(%d )
146
+ int(3 )
147
147
}
148
148
[15 ]=>
149
149
array (3 ) {
150
150
[0 ]=>
151
- int(259 )
151
+ int(%d )
152
152
[1 ]=>
153
153
string(7 ) "require "
154
154
[2 ]=>
@@ -590,7 +590,7 @@ array(142) {
590
590
[79 ]=>
591
591
array (3 ) {
592
592
[0 ]=>
593
- int(267 )
593
+ int(%d )
594
594
[1 ]=>
595
595
string(3 ) ">>= "
596
596
[2 ]=>
@@ -659,7 +659,7 @@ array(142) {
659
659
[88 ]=>
660
660
array (3 ) {
661
661
[0 ]=>
662
- int(285 )
662
+ int(%d )
663
663
[1 ]=>
664
664
string(2 ) "<= "
665
665
[2 ]=>
@@ -738,7 +738,7 @@ array(142) {
738
738
[98 ]=>
739
739
array (3 ) {
740
740
[0 ]=>
741
- int(266 )
741
+ int(%d )
742
742
[1 ]=>
743
743
string(5 ) "print "
744
744
[2 ]=>
@@ -889,7 +889,7 @@ array(142) {
889
889
[123 ]=>
890
890
array (3 ) {
891
891
[0 ]=>
892
- int(279 )
892
+ int(%d )
893
893
[1 ]=>
894
894
string(2 ) "&& "
895
895
[2 ]=>
@@ -960,42 +960,5 @@ array(142) {
960
960
[2 ]=>
961
961
int(26 )
962
962
}
963
- [135 ]=>
964
- string(1 ) "( "
965
- [136 ]=>
966
- string(1 ) ") "
967
- [137 ]=>
968
- string(1 ) "; "
969
- [138 ]=>
970
- array (3 ) {
971
- [0 ]=>
972
- int(%d)
973
- [1 ]=>
974
- string(1 ) "
975
- "
976
- [2 ]=>
977
- int(26 )
978
- }
979
- [139 ]=>
980
- string(1 ) "} "
981
- [140 ]=>
982
- array (3 ) {
983
- [0 ]=>
984
- int(%d)
985
- [1 ]=>
986
- string(1 ) "
987
- "
988
- [2 ]=>
989
- int(27 )
990
- }
991
- [141 ]=>
992
- array (3 ) {
993
- [0 ]=>
994
- int(%d)
995
- [1 ]=>
996
- string(2 ) "?> "
997
- [2 ]=>
998
- int(28 )
999
- }
1000
963
}
1001
964
Done
Original file line number Diff line number Diff line change @@ -151,6 +151,10 @@ static void tokenize(zval *return_value TSRMLS_DC)
151
151
ZVAL_NULL (& token );
152
152
153
153
token_line = CG (zend_lineno );
154
+
155
+ if (token_type == T_HALT_COMPILER ) {
156
+ break ;
157
+ }
154
158
}
155
159
}
156
160
You can’t perform that action at this time.
0 commit comments