]> granicus.if.org Git - php/commitdiff
Allow commas in specializer conditions
authorDmitry Stogov <dmitry@zend.com>
Tue, 9 Jan 2018 12:08:18 +0000 (15:08 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 9 Jan 2018 12:08:18 +0000 (15:08 +0300)
Zend/zend_vm_gen.php

index 13ff061a50e83994025344930deefdad74c3617a..33c761b98f71ef30bbbb5928e6e6ffc7f62f6622 100644 (file)
@@ -2173,7 +2173,7 @@ function gen_vm($def, $skel) {
                           strpos($line,"ZEND_VM_HOT_TYPE_SPEC_HANDLER(") === 0) {
                  // Parsing opcode handler's definition
                        if (preg_match(
-                                       "/^ZEND_VM_(HOT_)?TYPE_SPEC_HANDLER\(\s*([A-Z_]+)\s*,\s*([^,]+),\s*([A-Za-z_]+)\s*,\s*([A-Z_|]+)\s*,\s*([A-Z_|]+)\s*(,\s*([A-Z_|]+)\s*)?(,\s*SPEC\(([A-Z_|=,]+)\)\s*)?\)/",
+                                       "/^ZEND_VM_(HOT_)?TYPE_SPEC_HANDLER\(\s*([A-Z_]+)\s*,\s*((?:[^(,]|\([^()]*|(?R)*\))*),\s*([A-Za-z_]+)\s*,\s*([A-Z_|]+)\s*,\s*([A-Z_|]+)\s*(,\s*([A-Z_|]+)\s*)?(,\s*SPEC\(([A-Z_|=,]+)\)\s*)?\)/",
                                        $line,
                                        $m) == 0) {
                                die("ERROR ($def:$lineno): Invalid ZEND_VM_TYPE_HANDLER_HANDLER definition.\n");