]> granicus.if.org Git - php/commitdiff
Fixed bug #54089 (token_get_all() does not stop after __halt_compiler).
authorIlia Alshanetsky <iliaa@php.net>
Mon, 28 Feb 2011 15:18:27 +0000 (15:18 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Mon, 28 Feb 2011 15:18:27 +0000 (15:18 +0000)
NEWS
ext/tokenizer/tests/bug54089.phpt [new file with mode: 0644]
ext/tokenizer/tests/token_get_all_variation16.phpt
ext/tokenizer/tokenizer.c

diff --git a/NEWS b/NEWS
index ae8f4be7b9c04c9ea4b342d92c3a80595bbe2dee..928934c2e963d639729ccd566260e714629f4bb5 100644 (file)
--- a/NEWS
+++ b/NEWS
 - SPL extension:
   . Fixed memory leak in DirectoryIterator::getExtension() and 
     SplFileInfo::getExtension(). (Felipe)
+
+- Tokenizer Extension
+  . Fixed bug #54089 (token_get_all() does not stop after __halt_compiler).
+    (Ilia)
+
 17 Feb 2011, PHP 5.3.6RC1
 - Upgraded bundled Sqlite3 to version 3.7.4. (Ilia)
 - Upgraded bundled PCRE to version 8.11. (Ilia)
diff --git a/ext/tokenizer/tests/bug54089.phpt b/ext/tokenizer/tests/bug54089.phpt
new file mode 100644 (file)
index 0000000..e1f6d79
--- /dev/null
@@ -0,0 +1,40 @@
+--TEST--
+Bug #54089 (token_get_all() does not stop after __halt_compiler)
+--SKIPIF--
+<?php if (!extension_loaded("tokenizer")) print "skip"; ?>
+--FILE--
+<?php
+$code = "<?php __halt_compiler();\x01?>\x02";
+$tokens = token_get_all($code);
+
+var_dump($tokens);
+
+$code = '';
+foreach ($tokens as $t)
+{
+       $code .= isset($t[1]) ? $t[1] : $t;
+}
+var_dump($code);
+?>
+--EXPECTF--
+array(2) {
+  [0]=>
+  array(3) {
+    [0]=>
+    int(%d)
+    [1]=>
+    string(6) "<?php "
+    [2]=>
+    int(1)
+  }
+  [1]=>
+  array(3) {
+    [0]=>
+    int(%d)
+    [1]=>
+    string(15) "__halt_compiler"
+    [2]=>
+    int(1)
+  }
+}
+string(21) "<?php __halt_compiler"
index 55241ce6a16b7ed24daf79d38332aa8f53727a5b..4ae694e7419a17f715ecc8b43c8d5a0b75aac02a 100644 (file)
@@ -55,11 +55,11 @@ echo "Done"
 ?>
 --EXPECTF--
 *** Testing token_get_all() : with different function constructs ***
-array(142) {
+array(135) {
   [0]=>
   array(3) {
     [0]=>
-    int(368)
+    int(%d)
     [1]=>
     string(6) "<?php
 "
@@ -69,7 +69,7 @@ array(142) {
   [1]=>
   array(3) {
     [0]=>
-    int(324)
+    int(%d)
     [1]=>
     string(7) "declare"
     [2]=>
@@ -80,7 +80,7 @@ array(142) {
   [3]=>
   array(3) {
     [0]=>
-    int(307)
+    int(%d)
     [1]=>
     string(5) "VALUE"
     [2]=>
@@ -91,7 +91,7 @@ array(142) {
   [5]=>
   array(3) {
     [0]=>
-    int(305)
+    int(%d)
     [1]=>
     string(3) "100"
     [2]=>
@@ -104,7 +104,7 @@ array(142) {
   [8]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) "
 "
@@ -114,7 +114,7 @@ array(142) {
   [9]=>
   array(3) {
     [0]=>
-    int(262)
+    int(%d)
     [1]=>
     string(7) "include"
     [2]=>
@@ -125,7 +125,7 @@ array(142) {
   [11]=>
   array(3) {
     [0]=>
-    int(315)
+    int(%d)
     [1]=>
     string(13) ""addfile.php""
     [2]=>
@@ -138,7 +138,7 @@ array(142) {
   [14]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) "
 "
@@ -148,7 +148,7 @@ array(142) {
   [15]=>
   array(3) {
     [0]=>
-    int(259)
+    int(%d)
     [1]=>
     string(7) "require"
     [2]=>
@@ -159,7 +159,7 @@ array(142) {
   [17]=>
   array(3) {
     [0]=>
-    int(315)
+    int(%d)
     [1]=>
     string(13) ""sumfile.php""
     [2]=>
@@ -172,7 +172,7 @@ array(142) {
   [20]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(2) "
 
@@ -183,7 +183,7 @@ array(142) {
   [21]=>
   array(3) {
     [0]=>
-    int(334)
+    int(%d)
     [1]=>
     string(8) "function"
     [2]=>
@@ -192,7 +192,7 @@ array(142) {
   [22]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -201,7 +201,7 @@ array(142) {
   [23]=>
   array(3) {
     [0]=>
-    int(307)
+    int(%d)
     [1]=>
     string(10) "myFunction"
     [2]=>
@@ -212,7 +212,7 @@ array(142) {
   [25]=>
   array(3) {
     [0]=>
-    int(309)
+    int(%d)
     [1]=>
     string(2) "$a"
     [2]=>
@@ -223,7 +223,7 @@ array(142) {
   [27]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) "
 "
@@ -235,7 +235,7 @@ array(142) {
   [29]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(3) "
   "
@@ -245,7 +245,7 @@ array(142) {
   [30]=>
   array(3) {
     [0]=>
-    int(301)
+    int(%d)
     [1]=>
     string(2) "if"
     [2]=>
@@ -256,7 +256,7 @@ array(142) {
   [32]=>
   array(3) {
     [0]=>
-    int(309)
+    int(%d)
     [1]=>
     string(2) "$a"
     [2]=>
@@ -265,7 +265,7 @@ array(142) {
   [33]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -276,7 +276,7 @@ array(142) {
   [35]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -285,7 +285,7 @@ array(142) {
   [36]=>
   array(3) {
     [0]=>
-    int(305)
+    int(%d)
     [1]=>
     string(1) "2"
     [2]=>
@@ -296,7 +296,7 @@ array(142) {
   [38]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(5) "
     "
@@ -306,7 +306,7 @@ array(142) {
   [39]=>
   array(3) {
     [0]=>
-    int(336)
+    int(%d)
     [1]=>
     string(6) "return"
     [2]=>
@@ -315,7 +315,7 @@ array(142) {
   [40]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -324,7 +324,7 @@ array(142) {
   [41]=>
   array(3) {
     [0]=>
-    int(305)
+    int(%d)
     [1]=>
     string(1) "1"
     [2]=>
@@ -335,7 +335,7 @@ array(142) {
   [43]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(3) "
   "
@@ -345,7 +345,7 @@ array(142) {
   [44]=>
   array(3) {
     [0]=>
-    int(303)
+    int(%d)
     [1]=>
     string(4) "else"
     [2]=>
@@ -354,7 +354,7 @@ array(142) {
   [45]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(5) "
     "
@@ -364,7 +364,7 @@ array(142) {
   [46]=>
   array(3) {
     [0]=>
-    int(300)
+    int(%d)
     [1]=>
     string(4) "exit"
     [2]=>
@@ -375,7 +375,7 @@ array(142) {
   [48]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) "
 "
@@ -387,7 +387,7 @@ array(142) {
   [50]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(2) "
 
@@ -398,7 +398,7 @@ array(142) {
   [51]=>
   array(3) {
     [0]=>
-    int(309)
+    int(%d)
     [1]=>
     string(2) "$a"
     [2]=>
@@ -407,7 +407,7 @@ array(142) {
   [52]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -418,7 +418,7 @@ array(142) {
   [54]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -427,7 +427,7 @@ array(142) {
   [55]=>
   array(3) {
     [0]=>
-    int(307)
+    int(%d)
     [1]=>
     string(5) "VALUE"
     [2]=>
@@ -438,7 +438,7 @@ array(142) {
   [57]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) "
 "
@@ -448,7 +448,7 @@ array(142) {
   [58]=>
   array(3) {
     [0]=>
-    int(309)
+    int(%d)
     [1]=>
     string(2) "$b"
     [2]=>
@@ -457,7 +457,7 @@ array(142) {
   [59]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -468,7 +468,7 @@ array(142) {
   [61]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -477,7 +477,7 @@ array(142) {
   [62]=>
   array(3) {
     [0]=>
-    int(305)
+    int(%d)
     [1]=>
     string(2) "20"
     [2]=>
@@ -488,7 +488,7 @@ array(142) {
   [64]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) "
 "
@@ -498,7 +498,7 @@ array(142) {
   [65]=>
   array(3) {
     [0]=>
-    int(309)
+    int(%d)
     [1]=>
     string(2) "$c"
     [2]=>
@@ -507,7 +507,7 @@ array(142) {
   [66]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -518,7 +518,7 @@ array(142) {
   [68]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -527,7 +527,7 @@ array(142) {
   [69]=>
   array(3) {
     [0]=>
-    int(360)
+    int(%d)
     [1]=>
     string(5) "array"
     [2]=>
@@ -538,7 +538,7 @@ array(142) {
   [71]=>
   array(3) {
     [0]=>
-    int(305)
+    int(%d)
     [1]=>
     string(1) "1"
     [2]=>
@@ -549,7 +549,7 @@ array(142) {
   [73]=>
   array(3) {
     [0]=>
-    int(305)
+    int(%d)
     [1]=>
     string(1) "2"
     [2]=>
@@ -562,7 +562,7 @@ array(142) {
   [76]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) "
 "
@@ -572,7 +572,7 @@ array(142) {
   [77]=>
   array(3) {
     [0]=>
-    int(309)
+    int(%d)
     [1]=>
     string(2) "$b"
     [2]=>
@@ -581,7 +581,7 @@ array(142) {
   [78]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -590,7 +590,7 @@ array(142) {
   [79]=>
   array(3) {
     [0]=>
-    int(267)
+    int(%d)
     [1]=>
     string(3) ">>="
     [2]=>
@@ -599,7 +599,7 @@ array(142) {
   [80]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -608,7 +608,7 @@ array(142) {
   [81]=>
   array(3) {
     [0]=>
-    int(305)
+    int(%d)
     [1]=>
     string(1) "2"
     [2]=>
@@ -619,7 +619,7 @@ array(142) {
   [83]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(2) "
 
@@ -630,7 +630,7 @@ array(142) {
   [84]=>
   array(3) {
     [0]=>
-    int(301)
+    int(%d)
     [1]=>
     string(2) "if"
     [2]=>
@@ -641,7 +641,7 @@ array(142) {
   [86]=>
   array(3) {
     [0]=>
-    int(309)
+    int(%d)
     [1]=>
     string(2) "$b"
     [2]=>
@@ -650,7 +650,7 @@ array(142) {
   [87]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -659,7 +659,7 @@ array(142) {
   [88]=>
   array(3) {
     [0]=>
-    int(285)
+    int(%d)
     [1]=>
     string(2) "<="
     [2]=>
@@ -668,7 +668,7 @@ array(142) {
   [89]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -677,7 +677,7 @@ array(142) {
   [90]=>
   array(3) {
     [0]=>
-    int(305)
+    int(%d)
     [1]=>
     string(1) "0"
     [2]=>
@@ -688,7 +688,7 @@ array(142) {
   [92]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(3) "
   "
@@ -698,7 +698,7 @@ array(142) {
   [93]=>
   array(3) {
     [0]=>
-    int(300)
+    int(%d)
     [1]=>
     string(3) "die"
     [2]=>
@@ -709,7 +709,7 @@ array(142) {
   [95]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) "
 "
@@ -719,7 +719,7 @@ array(142) {
   [96]=>
   array(3) {
     [0]=>
-    int(303)
+    int(%d)
     [1]=>
     string(4) "else"
     [2]=>
@@ -728,7 +728,7 @@ array(142) {
   [97]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(3) "
   "
@@ -738,7 +738,7 @@ array(142) {
   [98]=>
   array(3) {
     [0]=>
-    int(266)
+    int(%d)
     [1]=>
     string(5) "print"
     [2]=>
@@ -749,7 +749,7 @@ array(142) {
   [100]=>
   array(3) {
     [0]=>
-    int(309)
+    int(%d)
     [1]=>
     string(2) "$b"
     [2]=>
@@ -762,7 +762,7 @@ array(142) {
   [103]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(2) "
 
@@ -773,7 +773,7 @@ array(142) {
   [104]=>
   array(3) {
     [0]=>
-    int(359)
+    int(%d)
     [1]=>
     string(4) "list"
     [2]=>
@@ -784,7 +784,7 @@ array(142) {
   [106]=>
   array(3) {
     [0]=>
-    int(309)
+    int(%d)
     [1]=>
     string(7) "$value1"
     [2]=>
@@ -795,7 +795,7 @@ array(142) {
   [108]=>
   array(3) {
     [0]=>
-    int(309)
+    int(%d)
     [1]=>
     string(7) "$value2"
     [2]=>
@@ -806,7 +806,7 @@ array(142) {
   [110]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -817,7 +817,7 @@ array(142) {
   [112]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -826,7 +826,7 @@ array(142) {
   [113]=>
   array(3) {
     [0]=>
-    int(309)
+    int(%d)
     [1]=>
     string(2) "$c"
     [2]=>
@@ -837,7 +837,7 @@ array(142) {
   [115]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) "
 "
@@ -847,7 +847,7 @@ array(142) {
   [116]=>
   array(3) {
     [0]=>
-    int(301)
+    int(%d)
     [1]=>
     string(2) "if"
     [2]=>
@@ -858,7 +858,7 @@ array(142) {
   [118]=>
   array(3) {
     [0]=>
-    int(351)
+    int(%d)
     [1]=>
     string(5) "empty"
     [2]=>
@@ -869,7 +869,7 @@ array(142) {
   [120]=>
   array(3) {
     [0]=>
-    int(309)
+    int(%d)
     [1]=>
     string(7) "$value1"
     [2]=>
@@ -880,7 +880,7 @@ array(142) {
   [122]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -889,7 +889,7 @@ array(142) {
   [123]=>
   array(3) {
     [0]=>
-    int(279)
+    int(%d)
     [1]=>
     string(2) "&&"
     [2]=>
@@ -898,7 +898,7 @@ array(142) {
   [124]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -909,7 +909,7 @@ array(142) {
   [126]=>
   array(3) {
     [0]=>
-    int(350)
+    int(%d)
     [1]=>
     string(5) "isset"
     [2]=>
@@ -920,7 +920,7 @@ array(142) {
   [128]=>
   array(3) {
     [0]=>
-    int(309)
+    int(%d)
     [1]=>
     string(7) "$value1"
     [2]=>
@@ -933,7 +933,7 @@ array(142) {
   [131]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(1) " "
     [2]=>
@@ -944,7 +944,7 @@ array(142) {
   [133]=>
   array(3) {
     [0]=>
-    int(371)
+    int(%d)
     [1]=>
     string(3) "
   "
@@ -954,48 +954,11 @@ array(142) {
   [134]=>
   array(3) {
     [0]=>
-    int(352)
+    int(%d)
     [1]=>
     string(15) "__halt_compiler"
     [2]=>
     int(26)
   }
-  [135]=>
-  string(1) "("
-  [136]=>
-  string(1) ")"
-  [137]=>
-  string(1) ";"
-  [138]=>
-  array(3) {
-    [0]=>
-    int(371)
-    [1]=>
-    string(1) "
-"
-    [2]=>
-    int(26)
-  }
-  [139]=>
-  string(1) "}"
-  [140]=>
-  array(3) {
-    [0]=>
-    int(371)
-    [1]=>
-    string(1) "
-"
-    [2]=>
-    int(27)
-  }
-  [141]=>
-  array(3) {
-    [0]=>
-    int(370)
-    [1]=>
-    string(2) "?>"
-    [2]=>
-    int(28)
-  }
 }
 Done
index 2357f430159a38318ac835b69a33b49f84014d37..ee28b3b8b42ccfbcb3eb4fb1697f29953ba43a46 100644 (file)
@@ -151,6 +151,10 @@ static void tokenize(zval *return_value TSRMLS_DC)
                ZVAL_NULL(&token);
 
                token_line = CG(zend_lineno);
+
+               if (token_type == T_HALT_COMPILER) {
+                       break;
+               }
        }
 }