summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
Diffstat (limited to 'Zend')
-rw-r--r--Zend/RFCs/001.txt136
-rw-r--r--Zend/RFCs/002.txt169
-rw-r--r--Zend/RFCs/003.txt72
-rw-r--r--Zend/Zend.m4137
-rw-r--r--Zend/configure.in13
-rw-r--r--Zend/tests/009.phpt9
-rw-r--r--Zend/tests/ast/zend-pow-assign.phpt11
-rw-r--r--Zend/tests/bug46811.phpt2
-rw-r--r--Zend/tests/bug48533.phpt8
-rw-r--r--Zend/tests/bug48770.phpt2
-rw-r--r--Zend/tests/bug48770_2.phpt4
-rw-r--r--Zend/tests/bug48770_3.phpt4
-rw-r--r--Zend/tests/bug49908.phpt4
-rw-r--r--Zend/tests/bug55509.phpt142
-rw-r--r--Zend/tests/bug64979.phpt60
-rw-r--r--Zend/tests/bug71474.phpt46
-rw-r--r--Zend/tests/bug72918.phpt44
-rw-r--r--Zend/tests/call_user_func_002.phpt2
-rw-r--r--Zend/tests/call_user_func_003.phpt6
-rw-r--r--Zend/tests/cast_to_object.phptbin1106 -> 1112 bytes
-rw-r--r--Zend/tests/foreach_018.phpt20
-rw-r--r--Zend/tests/generators/errors/count_error.phpt18
-rw-r--r--Zend/tests/ns_069.inc2
-rw-r--r--Zend/tests/ns_069.phpt4
-rw-r--r--Zend/tests/object_array_cast.phpt12
-rw-r--r--Zend/tests/settype_object.phptbin1126 -> 1132 bytes
-rw-r--r--Zend/tests/str_offset_002.phpt24
-rw-r--r--Zend/tests/traits/bugs/case-sensitive.phpt46
-rw-r--r--Zend/tests/traits/static_001.phpt42
-rw-r--r--Zend/tests/traits/static_002.phpt44
-rw-r--r--Zend/tests/traits/static_003.phpt52
-rw-r--r--Zend/tests/traits/static_004.phpt42
-rw-r--r--Zend/tests/traits/static_forward_static_call.phpt54
-rw-r--r--Zend/tests/traits/static_get_called_class.phpt46
-rw-r--r--Zend/tests/traits/trait_constant_001.phpt72
-rw-r--r--Zend/tests/traits/trait_constant_002.phpt52
-rw-r--r--Zend/tests/unset_cv05.phpt7
-rw-r--r--Zend/tests/use_function/conditional_function_declaration.phpt6
-rw-r--r--Zend/tests/use_late_binding_conflict.phpt13
-rw-r--r--Zend/tests/use_no_eval_conflict.phpt13
-rw-r--r--Zend/zend.h2
-rw-r--r--Zend/zend_API.c2
-rw-r--r--Zend/zend_ast.c2
-rw-r--r--Zend/zend_builtin_functions.c65
-rw-r--r--Zend/zend_closures.c3
-rw-r--r--Zend/zend_compile.c111
-rw-r--r--Zend/zend_compile.h9
-rw-r--r--Zend/zend_execute.c16
-rw-r--r--Zend/zend_execute.h11
-rw-r--r--Zend/zend_execute_API.c8
-rw-r--r--Zend/zend_extensions.h2
-rw-r--r--Zend/zend_gc.h23
-rw-r--r--Zend/zend_globals.h2
-rw-r--r--Zend/zend_hash.c123
-rw-r--r--Zend/zend_hash.h2
-rw-r--r--Zend/zend_ini_scanner.c3702
-rw-r--r--Zend/zend_ini_scanner_defs.h2
-rw-r--r--Zend/zend_interfaces.c28
-rw-r--r--Zend/zend_language_parser.y8
-rw-r--r--Zend/zend_multiply.h24
-rw-r--r--Zend/zend_object_handlers.c22
-rw-r--r--Zend/zend_objects.c2
-rw-r--r--Zend/zend_objects_API.c6
-rw-r--r--Zend/zend_objects_API.h9
-rw-r--r--Zend/zend_operators.c39
-rw-r--r--Zend/zend_operators.h73
-rw-r--r--Zend/zend_portability.h51
-rw-r--r--Zend/zend_stream.c9
-rw-r--r--Zend/zend_types.h31
-rw-r--r--Zend/zend_variables.h7
-rw-r--r--Zend/zend_virtual_cwd.c134
-rw-r--r--Zend/zend_virtual_cwd.h33
-rw-r--r--Zend/zend_vm_def.h97
-rw-r--r--Zend/zend_vm_execute.h268
74 files changed, 3048 insertions, 3318 deletions
diff --git a/Zend/RFCs/001.txt b/Zend/RFCs/001.txt
deleted file mode 100644
index bf1d847b97..0000000000
--- a/Zend/RFCs/001.txt
+++ /dev/null
@@ -1,136 +0,0 @@
-Revamped object model using object handles
-===========================================
-
-Background
-----------
-
-In the Zend Engine 1.0 (and its predecessor the PHP 3 scripting
-engine) the object model's design is that instantiated objects are
-language values. This means that when programmers are performing
-operations, such variable assignment and passing parameters to
-functions, objects are handled very similarly to the way other
-primitive types are handled such as integers and strings.
-Semantically this means that the whole object is being copied. The
-approach Java takes is different where one refers to objects by handle
-and not by value (one can think of a handle as an objects' ID).
-
-Need
-----
-
-Unfortunately, the approach taken up to now has severely limited the
-Zend Engine's object oriented model, both feature and simplicity
-wise. One of the main problems with the former approach is that object
-instantiation and duplication is very hard to control, a problem which
-can not only lead to inefficient development but also often to strange
-run-time behavior. Changing the object model to a handle oriented
-model will allow the addressing of many needs such as destructors,
-de-referencing method return values, tight control of object
-duplication and more.
-
-Overview
---------
-
-The proposed object model is very much influenced by the Java
-model. In general, when you create a new object you will be getting a
-handle to the object instead of the object itself. When this handle is
-sent to functions, assigned and copied it is only the handle which is
-copied/sent/assigned. The object itself is never copied nor
-duplicated. This results in all handles of this object to always point
-at the same object making it a very consistent solution and saving
-unnecessary duplication and confusing behavior.
-
-Functionality
--------------
-
-After this change the basic use of objects will be almost identical to
-previous versions of the scripting engine. However, you won't bump
-into awkward and confusing copying & destructing of objects. In order
-to create and use a new object instance you will do the following:
-$object = new MyClass(); $object->method();
-
-The previous code will assign $object the handle of a new instance of
-the class MyClass and call one of its methods.
-
-
-Consider the following code:
-
-1 class MyClass
-2 {
-3 function setMember($value)
-4 {
-5 $this->member = $value;
-6 }
-7
-8 function getMember()
-9 {
-10 return $this->member;
-11 }
-12 }
-13
-14 function foo($obj)
-15 {
-16 $obj->setMember("foo");
-17 }
-18
-19 $object = new MyClass();
-20 $object->setMember("bar");
-21 foo($object);
-22 print $object->getMember();
-
-Without the new Java-like handles, at line 20 the objects' data member
-member is set to the string value of "bar". Because of the internal
-representation of objects in the Zend Engine 1.0, the object is marked
-as a reference, and when it is sent by value to the function foo, it
-is duplicated (!). Therefore, the call to foo() on line 21 will
-result in the $obj->setMember("foo") call being called on a duplicate
-of $object. Line 22 will then result in "bar" being printed.
-
-This is how the scripting engine has worked until today. Most
-developers are probably unaware of the fact that they aren't always
-talking to the same object but often duplicates; others may have
-realized this can usually be solved by always passing objects by
-reference (unless a replica is actually desired, which is uncommon).
-
-The new object model will allow for a much more intuitive
-implementation of the code. On line 21, the object's handle (ID) is
-passed to foo() by value. Inside foo(), the object is fetched
-according to this handle and, therefore, the setMember() method is
-called on the originally instantiated object and not a copy. Line 22
-will therefore result in "foo" being printed. This approach gives
-developers tighter control of when objects are created and duplicated.
-An additional not-as-important benefit is that the object handle will
-be passed to foo() by value, which most probably will also save
-unnecessary duplication of the value containing the ID itself and thus
-additionally improving run-time performance.
-
-This was just a simple description of why the new object model solves
-awkward behavior and makes object handling much easier, intuitive and
-efficient. The importance of this change goes far beyond what is
-mentioned in this section as you will see in further sections which
-describe new features with a majority of them being based on this
-change.
-
-Compatibility Notes
---------------------
-
-Many PHP programmers aren't even aware of the copying quirks of the
-current object model and, therefore, there is a relatively good chance
-that the amount of PHP applications that will work out of the box or
-after a very small amount of modifications would be high.
-
-To simplify migration, version 2.0 will support an optional
-'auto-clone' feature, which will perform a cloning of the object
-whenever it would have been copied in version 1.0. Optionally, it
-will also be possible to request that the engine will emit an E_NOTICE
-message whenever such an automatic clone occurs, in order to allow
-developers to gradually migrate to the version 2.0-style behavior
-(without automatic clones).
-
-Dependencies
-------------
-
-The new object model is not dependent on other features. Many of the
-other Zend Engine 2.0 features, such as the $foo->bar()->barbara()
-syntax, destructors and others completely rely on this new object
-model.
-
diff --git a/Zend/RFCs/002.txt b/Zend/RFCs/002.txt
deleted file mode 100644
index 7d7cb885d8..0000000000
--- a/Zend/RFCs/002.txt
+++ /dev/null
@@ -1,169 +0,0 @@
-Title: Zend 2.0 Namespaces
-Version: $Id$
-Status: declined
-Maintainer: Stig S. Bakken <ssb@php.net>
-Created: 2001-09-08
-Modified: 2001-09-08
-
-
-1. Background/Need
-==================
-
-PHP and Zend 1.0 have come to a point where a lot of reusable code is
-being written; from simple functions and classes to entire application
-frameworks. It is becoming increasingly difficult to avoid symbol
-name collisions with the current scoping methods.
-
-The symbol scopes available in Zend 1.0 are the global scope, the
-class scope and the function scope. All scopes but classes may
-contain variables, only the class and global scopes may contain
-functions, while only the global scope may contain constants and
-classes. This means that all of Zend 1.0's scoping methods are
-inherently limited for solving symbol name collision problems.
-
-
-2. Overview
-===========
-
-Namespaces in Zend 2.0 provide a way to manage the symbol collision
-problem by making it possible to define multiple symbol tables able to
-contain all types of symbols. Zend will get the notion of a current
-namespace, defaulting to the current global one. The current name
-space may be changed on a file-by-file basis. Symbols in other name
-spaces than the current one may be referenced using a new namespace
-operator. It will be possible to "import" symbols from one namespace
-into another.
-
-
-3. Functionality
-================
-
-3.1. Namespace Syntax
-=====================
-
-The namespace operator ":" is used to refer to symbols in other
-namespaces than the current one:
-
-Class: Namespace:class
-Function: Namespace:function
-Static method: Namespace:class::method
-Variable: $Namespace:variable
-Constant: Namespace:CONSTANT
-Class variable: $Namespace:class::variable
-
-To refer to symbols in the global namespace, symbols are prefixed with
-only the namespace operator:
-
-Class: :class
-Function: :function
-Static method: :class::method
-Variable: $:variable
-Constant: :CONSTANT
-Class variable: $:class::variable
-
-Note: $:variable will effectively be just another syntax for
-$GLOBALS['variable'].
-
-A namespace may have a name containing a ":", it is always the last
-":" character in the symbol qualifier that is the actual namespace
-operator:
-
-Class: Name:Space:class
-Function: Name:Space:function
-Static method: Name:Space:class::method
-Variable: $Name:Space:variable
-Constant: Name:Space:CONSTANT
-Class variable: $Name:Space:class::variable
-
-(Here, the ":" between "Name" and "Space" is part of the name, it is
-the one after "Space" that is the namespace operator.)
-
-
-3.2. Defining Namespaces
-========================
-
-Individual files may define a namespace that will apply to the entire
-file. If no "namespace" operator occurs in the file, it will be in
-the global namespace:
-
- 1 namespace HTML;
- 2
- 3 class Form {
- 4 function Form() {
- 5 // constructor
- 6 }
- 7 // ...
- 8 }
-
-Or with the "nested" name syntax:
-
- 1 namespace HTML:Form;
- 2
- 3 class Image {
- 4 var $src;
- 5 function Image($src) {
- 6 $this->src = $src;
- 7 }
- 8 // ...
- 9 }
-
-Code executed within the "HTML" namespace may refer to the Form class
-as just "Form". Code executed from within other namespaces has to
-refer to it as "HTML:Form". The "namespace" statement must occur
-before any other statements in the file.
-
-# [ssb 2001-09-08]:
-# Should it be possible to "add" symbols to a namespace by including a
-# second file with the same namespace statement?
-
-
-3.3. Importing Symbols
-======================
-
-It is possible to import symbols from another namespace into the
-current one with the "import" statement:
-
- import * from HTML; // all symbols
-
- import Form from HTML; // single symbols
-
- import Form,Table from HTML; // multiple symbols
-
-There is a potential for name clashes between symols of different
-types that have the same qualifier syntax. These are resolved in this
-order: class, function, constant.
-
-Optionally, the symbol type may be explicitly given to import (as
-"class", "function", "variable" or "constant"):
-
- import class Form from HTML;
-
-And finally, you may import all symbols of a given type:
-
- import constant * from HTML:Table;
-
-The namespace with its symbols must already be defined before using
-"import".
-
-
-4. Compatibility Notes
-======================
-
-Old code that does not take advantage of namespaces will run without
-modifications.
-
-
-5. Dependencies
-===============
-
-The class variable syntax depends on this class variables being
-implemented in the new ZE2 object model.
-
-
-6. Acknowledgements
-===================
-
-Andi Gutmans <andi@zend.com> and Zeev Suraski <zeev@zend.com> for
-initial ZE2 namespaces proposal
-
-Dean Hall <php@apt7.com> for the initial symbol qualification syntax
diff --git a/Zend/RFCs/003.txt b/Zend/RFCs/003.txt
deleted file mode 100644
index ac042183d4..0000000000
--- a/Zend/RFCs/003.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-Title: Loose type requirements for functions
-Version: $Id$
-Status: draft
-Maintainer: Brian Moon <brianm@dealnews.com>
-Created: 2001-09-17
-Modified: 2001-09-17
-
-
-1. Background/Need
-==================
-
-Many internal functions of PHP will reject parameters because of their
-type (the array and variable function come to mind). For userland
-this is not an easy task as there is no uniform way to do it. An
-addition to the engine for requiring loose types would allow
-developers to know that the data passed to their functions are of the
-correct type and reduce the need for duplicating the same code in
-every function to check for the type of data.
-
-
-2. Overview
-===========
-
-Loose typing mostly means evaluating the contents of the variable and
-not the type of the variable itself. The requirements for this would
-and should work much like several of the is_* functions do now.
-
-The typing of parameters would be optional and those not typed would
-simply continue to be treated as they are now.
-
-3. Functionality
-================
-
-3.1. Allowed Types
-==================
-
-Only loose types should be needed to ensure the data is usable by the
-function. Duplicating the functionallity of is_scalar, is_resource,
-is_array and is_object should give developers all the information they
-need to use a variable correctly.
-
-3.2. Syntax
-===========
-
-The current function syntax should be expanded to allow typing of
-variables inline in a C style.
-
-function foo ($var){
-}
-
-could be changed to require an array such as:
-
-function foo (array $var){
-}
-
-3.3. Errors
-===========
-
-Mis-matches in type should be reported as fatal errors and should halt
-the execution of a script as that function cannot be run and code
-following could not reliably run.
-
-
-4. Compatibility Notes
-======================
-
-Old code that does not take advantage of this will run without
-modifications.
-
-
-
-
diff --git a/Zend/Zend.m4 b/Zend/Zend.m4
index 9d3b46a755..a1c1d3b07b 100644
--- a/Zend/Zend.m4
+++ b/Zend/Zend.m4
@@ -466,3 +466,140 @@ else
HAVE_GCC_GLOBAL_REGS=no
fi
AC_MSG_RESULT($ZEND_GCC_GLOBAL_REGS)
+
+dnl
+dnl Check if atof() accepts NAN
+dnl
+AC_CACHE_CHECK(whether atof() accepts NAN, ac_cv_atof_accept_nan,[
+AC_TRY_RUN([
+#include <math.h>
+#include <stdlib.h>
+
+#ifdef HAVE_ISNAN
+#define zend_isnan(a) isnan(a)
+#elif defined(HAVE_FPCLASS)
+#define zend_isnan(a) ((fpclass(a) == FP_SNAN) || (fpclass(a) == FP_QNAN))
+#else
+#define zend_isnan(a) 0
+#endif
+
+int main(int argc, char** argv)
+{
+ return zend_isnan(atof("NAN")) ? 0 : 1;
+}
+],[
+ ac_cv_atof_accept_nan=yes
+],[
+ ac_cv_atof_accept_nan=no
+],[
+ ac_cv_atof_accept_nan=no
+])])
+if test "$ac_cv_atof_accept_nan" = "yes"; then
+ AC_DEFINE([HAVE_ATOF_ACCEPTS_NAN], 1, [whether atof() accepts NAN])
+fi
+
+dnl
+dnl Check if atof() accepts INF
+dnl
+AC_CACHE_CHECK(whether atof() accepts INF, ac_cv_atof_accept_inf,[
+AC_TRY_RUN([
+#include <math.h>
+#include <stdlib.h>
+
+#ifdef HAVE_ISINF
+#define zend_isinf(a) isinf(a)
+#elif defined(INFINITY)
+/* Might not work, but is required by ISO C99 */
+#define zend_isinf(a) (((a)==INFINITY)?1:0)
+#elif defined(HAVE_FPCLASS)
+#define zend_isinf(a) ((fpclass(a) == FP_PINF) || (fpclass(a) == FP_NINF))
+#else
+#define zend_isinf(a) 0
+#endif
+
+int main(int argc, char** argv)
+{
+ return zend_isinf(atof("INF")) && zend_isinf(atof("-INF")) ? 0 : 1;
+}
+],[
+ ac_cv_atof_accept_inf=yes
+],[
+ ac_cv_atof_accept_inf=no
+],[
+ ac_cv_atof_accept_inf=no
+])])
+if test "$ac_cv_atof_accept_inf" = "yes"; then
+ AC_DEFINE([HAVE_ATOF_ACCEPTS_INF], 1, [whether atof() accepts INF])
+fi
+
+dnl
+dnl Check if HUGE_VAL == INF
+dnl
+AC_CACHE_CHECK(whether HUGE_VAL == INF, ac_cv_huge_val_inf,[
+AC_TRY_RUN([
+#include <math.h>
+#include <stdlib.h>
+
+#ifdef HAVE_ISINF
+#define zend_isinf(a) isinf(a)
+#elif defined(INFINITY)
+/* Might not work, but is required by ISO C99 */
+#define zend_isinf(a) (((a)==INFINITY)?1:0)
+#elif defined(HAVE_FPCLASS)
+#define zend_isinf(a) ((fpclass(a) == FP_PINF) || (fpclass(a) == FP_NINF))
+#else
+#define zend_isinf(a) 0
+#endif
+
+int main(int argc, char** argv)
+{
+ return zend_isinf(HUGE_VAL) ? 0 : 1;
+}
+],[
+ ac_cv_huge_val_inf=yes
+],[
+ ac_cv_huge_val_inf=no
+],[
+ ac_cv_huge_val_inf=yes
+])])
+dnl This is the most probable fallback so we assume yes in case of cross compile.
+if test "$ac_cv_huge_val_inf" = "yes"; then
+ AC_DEFINE([HAVE_HUGE_VAL_INF], 1, [whether HUGE_VAL == INF])
+fi
+
+dnl
+dnl Check if HUGE_VAL + -HUGEVAL == NAN
+dnl
+AC_CACHE_CHECK(whether HUGE_VAL + -HUGEVAL == NAN, ac_cv_huge_val_nan,[
+AC_TRY_RUN([
+#include <math.h>
+#include <stdlib.h>
+
+#ifdef HAVE_ISNAN
+#define zend_isnan(a) isnan(a)
+#elif defined(HAVE_FPCLASS)
+#define zend_isnan(a) ((fpclass(a) == FP_SNAN) || (fpclass(a) == FP_QNAN))
+#else
+#define zend_isnan(a) 0
+#endif
+
+int main(int argc, char** argv)
+{
+#if defined(__sparc__) && !(__GNUC__ >= 3)
+ /* prevent bug #27830 */
+ return 1;
+#else
+ return zend_isnan(HUGE_VAL + -HUGE_VAL) ? 0 : 1;
+#endif
+}
+],[
+ ac_cv_huge_val_nan=yes
+],[
+ ac_cv_huge_val_nan=no
+],[
+ ac_cv_huge_val_nan=yes
+])])
+dnl This is the most probable fallback so we assume yes in case of cross compile.
+if test "$ac_cv_huge_val_nan" = "yes"; then
+ AC_DEFINE([HAVE_HUGE_VAL_NAN], 1, [whether HUGE_VAL + -HUGEVAL == NAN])
+fi
diff --git a/Zend/configure.in b/Zend/configure.in
index 29551d924c..3ebea4b8ed 100644
--- a/Zend/configure.in
+++ b/Zend/configure.in
@@ -62,13 +62,6 @@ int zend_sprintf(char *buffer, const char *format, ...);
#include <math.h>
-/* To enable the is_nan, is_infinite and is_finite PHP functions */
-#ifdef NETWARE
- #define HAVE_ISNAN 1
- #define HAVE_ISINF 1
- #define HAVE_ISFINITE 1
-#endif
-
#ifndef zend_isnan
#ifdef HAVE_ISNAN
#define zend_isnan(a) isnan(a)
@@ -102,12 +95,6 @@ int zend_sprintf(char *buffer, const char *format, ...);
#endif /* ifndef ZEND_ACCONFIG_H_NO_C_PROTOS */
-#ifdef NETWARE
-#ifdef USE_WINSOCK
-#/*This detection against winsock is of no use*/ undef HAVE_SOCKLEN_T
-#/*This detection against winsock is of no use*/ undef HAVE_SYS_SOCKET_H
-#endif
-#endif
])
dnl We want this one before the checks, so the checks can modify CFLAGS.
diff --git a/Zend/tests/009.phpt b/Zend/tests/009.phpt
index b44a6ba687..0dc9453576 100644
--- a/Zend/tests/009.phpt
+++ b/Zend/tests/009.phpt
@@ -7,6 +7,10 @@ class foo {
function bar () {
var_dump(get_class());
}
+ function testNull ()
+ {
+ var_dump(get_class(null));
+ }
}
class foo2 extends foo {
@@ -27,6 +31,8 @@ var_dump(get_class("qwerty"));
var_dump(get_class($f1));
var_dump(get_class($f2));
+$f1->testNull();
+
echo "Done\n";
?>
--EXPECTF--
@@ -45,4 +51,7 @@ Warning: get_class() expects parameter 1 to be object, string given in %s on lin
bool(false)
string(3) "foo"
string(4) "foo2"
+
+Warning: get_class() expects parameter 1 to be object, null given in %s on line %d
+bool(false)
Done
diff --git a/Zend/tests/ast/zend-pow-assign.phpt b/Zend/tests/ast/zend-pow-assign.phpt
new file mode 100644
index 0000000000..d978e77ce6
--- /dev/null
+++ b/Zend/tests/ast/zend-pow-assign.phpt
@@ -0,0 +1,11 @@
+--TEST--
+ZEND_POW_ASSIGN
+--INI--
+zend.assertions=1
+--FILE--
+<?php
+
+assert_options(ASSERT_WARNING);
+assert(false && ($a **= 2));
+--EXPECTF--
+Warning: assert(): assert(false && ($a **= 2)) failed in %s%ezend-pow-assign.php on line %d
diff --git a/Zend/tests/bug46811.phpt b/Zend/tests/bug46811.phpt
index e98f6e7720..fe41bffff6 100644
--- a/Zend/tests/bug46811.phpt
+++ b/Zend/tests/bug46811.phpt
@@ -9,5 +9,5 @@ var_dump(ini_get("arg_separator.output"));
?>
--EXPECTF--
bool(false)
-%unicode|string%(1) "&"
+string(1) "&"
diff --git a/Zend/tests/bug48533.phpt b/Zend/tests/bug48533.phpt
index 61a56d38ac..3b4777884e 100644
--- a/Zend/tests/bug48533.phpt
+++ b/Zend/tests/bug48533.phpt
@@ -31,11 +31,11 @@ $x::c();
?>
--EXPECTF--
-%unicode|string%(9) "__call::a"
+string(9) "__call::a"
int(2)
-%unicode|string%(9) "__call::c"
-%unicode|string%(15) "__callStatic::a"
+string(9) "__call::c"
+string(15) "__callStatic::a"
Deprecated: Non-static method foo::b() should not be called statically in %s on line %d
int(2)
-%unicode|string%(15) "__callStatic::c"
+string(15) "__callStatic::c"
diff --git a/Zend/tests/bug48770.phpt b/Zend/tests/bug48770.phpt
index 40fa84157b..067e892e66 100644
--- a/Zend/tests/bug48770.phpt
+++ b/Zend/tests/bug48770.phpt
@@ -50,4 +50,4 @@ $c->func('This should work!');
?>
--EXPECTF--
-%unicode|string%(26) "A::func: This should work!"
+string(26) "A::func: This should work!"
diff --git a/Zend/tests/bug48770_2.phpt b/Zend/tests/bug48770_2.phpt
index dff54e1550..54ce92fa61 100644
--- a/Zend/tests/bug48770_2.phpt
+++ b/Zend/tests/bug48770_2.phpt
@@ -46,8 +46,8 @@ $c->func('This should work!');
?>
--EXPECTF--
-%unicode|string%(27) "A::func2: This should work!"
-%unicode|string%(27) "A::func3: This should work!"
+string(27) "A::func2: This should work!"
+string(27) "A::func3: This should work!"
Warning: call_user_func_array() expects parameter 1 to be a valid callback, cannot access private method A::func22() in %s on line %d
diff --git a/Zend/tests/bug48770_3.phpt b/Zend/tests/bug48770_3.phpt
index 68fe84314d..43311df533 100644
--- a/Zend/tests/bug48770_3.phpt
+++ b/Zend/tests/bug48770_3.phpt
@@ -45,7 +45,7 @@ $c->func('This should work!');
?>
--EXPECTF--
-%unicode|string%(27) "B::func2: This should work!"
-%unicode|string%(27) "B::func3: This should work!"
+string(27) "B::func2: This should work!"
+string(27) "B::func3: This should work!"
Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'B' does not have a method 'inexistent' in %s on line %d
diff --git a/Zend/tests/bug49908.phpt b/Zend/tests/bug49908.phpt
index ea05f2b567..4f2b5b7cb2 100644
--- a/Zend/tests/bug49908.phpt
+++ b/Zend/tests/bug49908.phpt
@@ -17,8 +17,8 @@ new Foo;
?>
--EXPECTF--
-%unicode|string%(3) "Foo"
-%unicode|string%(3) "Bar"
+string(3) "Foo"
+string(3) "Bar"
Fatal error: Uncaught Exception: Bar in %s:%d
Stack trace:
diff --git a/Zend/tests/bug55509.phpt b/Zend/tests/bug55509.phpt
index 5268789df6..4fc3299620 100644
--- a/Zend/tests/bug55509.phpt
+++ b/Zend/tests/bug55509.phpt
@@ -1,71 +1,71 @@
---TEST--
-Bug #55509 (segfault on x86_64 using more than 2G memory)
---SKIPIF--
-<?php
-if (PHP_INT_SIZE == 4) {
- die('skip Not for 32-bits OS');
-}
-
-$zend_mm_enabled = getenv("USE_ZEND_ALLOC");
-if ($zend_mm_enabled === "0") {
- die("skip Zend MM disabled");
-}
-
-if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
-// check the available memory
-if (PHP_OS == 'Linux') {
- $lines = file('/proc/meminfo');
- $infos = array();
- foreach ($lines as $line) {
- $tmp = explode(":", $line);
- $index = strtolower($tmp[0]);
- $value = (int)ltrim($tmp[1], " ")*1024;
- $infos[$index] = $value;
- }
- $freeMemory = $infos['memfree']+$infos['buffers']+$infos['cached'];
- if ($freeMemory < 2100*1024*1024) {
- die('skip Not enough memory.');
- }
-}
-elseif (PHP_OS == 'FreeBSD') {
- $lines = explode("\n",`sysctl -a`);
- $infos = array();
- foreach ($lines as $line) {
- if(!$line){
- continue;
- }
- $tmp = explode(":", $line);
- $index = strtolower($tmp[0]);
- $value = trim($tmp[1], " ");
- $infos[$index] = $value;
- }
- $freeMemory = ($infos['vm.stats.vm.v_inactive_count']*$infos['hw.pagesize'])
- +($infos['vm.stats.vm.v_cache_count']*$infos['hw.pagesize'])
- +($infos['vm.stats.vm.v_free_count']*$infos['hw.pagesize']);
- if ($freeMemory < 2100*1024*1024) {
- die('skip Not enough memory.');
- }
-}
-?>
---INI--
-memory_limit=2100M
---FILE--
-<?php
-$a1 = str_repeat("1", 1024 * 1024 * 1024 * 0.5);
-echo "1\n";
-$a2 = str_repeat("2", 1024 * 1024 * 1024 * 0.5);
-echo "2\n";
-$a3 = str_repeat("3", 1024 * 1024 * 1024 * 0.5);
-echo "3\n";
-$a4 = str_repeat("4", 1024 * 1024 * 1024 * 0.5);
-echo "4\n";
-$a5 = str_repeat("5", 1024 * 1024 * 1024 * 0.5);
-echo "5\n";
-?>
---EXPECTF--
-1
-2
-3
-4
-
-Fatal error: Allowed memory size of %d bytes exhausted%s(tried to allocate %d bytes) in %sbug55509.php on line %d
+--TEST--
+Bug #55509 (segfault on x86_64 using more than 2G memory)
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE == 4) {
+ die('skip Not for 32-bits OS');
+}
+
+$zend_mm_enabled = getenv("USE_ZEND_ALLOC");
+if ($zend_mm_enabled === "0") {
+ die("skip Zend MM disabled");
+}
+
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
+// check the available memory
+if (PHP_OS == 'Linux') {
+ $lines = file('/proc/meminfo');
+ $infos = array();
+ foreach ($lines as $line) {
+ $tmp = explode(":", $line);
+ $index = strtolower($tmp[0]);
+ $value = (int)ltrim($tmp[1], " ")*1024;
+ $infos[$index] = $value;
+ }
+ $freeMemory = $infos['memfree']+$infos['buffers']+$infos['cached'];
+ if ($freeMemory < 2100*1024*1024) {
+ die('skip Not enough memory.');
+ }
+}
+elseif (PHP_OS == 'FreeBSD') {
+ $lines = explode("\n",`sysctl -a`);
+ $infos = array();
+ foreach ($lines as $line) {
+ if(!$line){
+ continue;
+ }
+ $tmp = explode(":", $line);
+ $index = strtolower($tmp[0]);
+ $value = trim($tmp[1], " ");
+ $infos[$index] = $value;
+ }
+ $freeMemory = ($infos['vm.stats.vm.v_inactive_count']*$infos['hw.pagesize'])
+ +($infos['vm.stats.vm.v_cache_count']*$infos['hw.pagesize'])
+ +($infos['vm.stats.vm.v_free_count']*$infos['hw.pagesize']);
+ if ($freeMemory < 2100*1024*1024) {
+ die('skip Not enough memory.');
+ }
+}
+?>
+--INI--
+memory_limit=2100M
+--FILE--
+<?php
+$a1 = str_repeat("1", 1024 * 1024 * 1024 * 0.5);
+echo "1\n";
+$a2 = str_repeat("2", 1024 * 1024 * 1024 * 0.5);
+echo "2\n";
+$a3 = str_repeat("3", 1024 * 1024 * 1024 * 0.5);
+echo "3\n";
+$a4 = str_repeat("4", 1024 * 1024 * 1024 * 0.5);
+echo "4\n";
+$a5 = str_repeat("5", 1024 * 1024 * 1024 * 0.5);
+echo "5\n";
+?>
+--EXPECTF--
+1
+2
+3
+4
+
+Fatal error: Allowed memory size of %d bytes exhausted%s(tried to allocate %d bytes) in %sbug55509.php on line %d
diff --git a/Zend/tests/bug64979.phpt b/Zend/tests/bug64979.phpt
index 5bc8e5a6ab..6122ccf270 100644
--- a/Zend/tests/bug64979.phpt
+++ b/Zend/tests/bug64979.phpt
@@ -1,30 +1,30 @@
---TEST--
-Bug #64979 (Wrong behavior of static variables in closure generators)
---FILE--
-<?php
-
-function new_closure_gen() {
- return function() {
- static $foo = 0;
- yield ++$foo;
- };
-}
-
-$closure1 = new_closure_gen();
-$closure2 = new_closure_gen();
-
-$gen1 = $closure1();
-$gen2 = $closure1();
-$gen3 = $closure2();
-
-foreach (array($gen1, $gen2, $gen3) as $gen) {
- foreach ($gen as $val) {
- var_dump($val);
- }
-}
-
-?>
---EXPECT--
-int(1)
-int(2)
-int(1)
+--TEST--
+Bug #64979 (Wrong behavior of static variables in closure generators)
+--FILE--
+<?php
+
+function new_closure_gen() {
+ return function() {
+ static $foo = 0;
+ yield ++$foo;
+ };
+}
+
+$closure1 = new_closure_gen();
+$closure2 = new_closure_gen();
+
+$gen1 = $closure1();
+$gen2 = $closure1();
+$gen3 = $closure2();
+
+foreach (array($gen1, $gen2, $gen3) as $gen) {
+ foreach ($gen as $val) {
+ var_dump($val);
+ }
+}
+
+?>
+--EXPECT--
+int(1)
+int(2)
+int(1)
diff --git a/Zend/tests/bug71474.phpt b/Zend/tests/bug71474.phpt
index e67bb9b240..72b0db91a1 100644
--- a/Zend/tests/bug71474.phpt
+++ b/Zend/tests/bug71474.phpt
@@ -1,23 +1,23 @@
---TEST--
-Bug #71474: Crash because of VM stack corruption on Magento2
---FILE--
-<?php
-class foo {
- function __call($name, $args) {
- $a = $b = $c = $d = $e = $f = 1;
- }
-}
-
-function test($n, $x) {
-// var_dump($n);
- if ($n > 0) {
- $x->bug();
- test($n - 1, $x);
- }
-}
-
-test(3000, new foo());
-echo "OK\n";
-?>
---EXPECT--
-OK
+--TEST--
+Bug #71474: Crash because of VM stack corruption on Magento2
+--FILE--
+<?php
+class foo {
+ function __call($name, $args) {
+ $a = $b = $c = $d = $e = $f = 1;
+ }
+}
+
+function test($n, $x) {
+// var_dump($n);
+ if ($n > 0) {
+ $x->bug();
+ test($n - 1, $x);
+ }
+}
+
+test(3000, new foo());
+echo "OK\n";
+?>
+--EXPECT--
+OK
diff --git a/Zend/tests/bug72918.phpt b/Zend/tests/bug72918.phpt
index f3dc1d2918..403d4e69c5 100644
--- a/Zend/tests/bug72918.phpt
+++ b/Zend/tests/bug72918.phpt
@@ -1,22 +1,22 @@
---TEST--
-Bug #72918 (negative offset inside a quoted string leads to parse error)
---FILE--
-<?php
-$array = [-3 => 'foo'];
-$string = 'abcde';
-
-echo "$array[-3]\n";
-echo "$string[-3]\n";
-echo <<<EOT
-$array[-3]
-$string[-3]
-
-EOT;
-?>
-===DONE===
---EXPECT--
-foo
-c
-foo
-c
-===DONE===
+--TEST--
+Bug #72918 (negative offset inside a quoted string leads to parse error)
+--FILE--
+<?php
+$array = [-3 => 'foo'];
+$string = 'abcde';
+
+echo "$array[-3]\n";
+echo "$string[-3]\n";
+echo <<<EOT
+$array[-3]
+$string[-3]
+
+EOT;
+?>
+===DONE===
+--EXPECT--
+foo
+c
+foo
+c
+===DONE===
diff --git a/Zend/tests/call_user_func_002.phpt b/Zend/tests/call_user_func_002.phpt
index e79dd1a759..0bf3d39376 100644
--- a/Zend/tests/call_user_func_002.phpt
+++ b/Zend/tests/call_user_func_002.phpt
@@ -14,7 +14,7 @@ call_user_func(array($foo, ''));
?>
--EXPECTF--
-%unicode|string%(3) "foo"
+string(3) "foo"
Warning: call_user_func() expects parameter 1 to be a valid callback, class 'foo' not found in %s on line %d
diff --git a/Zend/tests/call_user_func_003.phpt b/Zend/tests/call_user_func_003.phpt
index d516584eb2..102433f557 100644
--- a/Zend/tests/call_user_func_003.phpt
+++ b/Zend/tests/call_user_func_003.phpt
@@ -20,11 +20,11 @@ var_dump(call_user_func(function() use (&$foo) { return $foo; }, '__invoke'));
?>
--EXPECTF--
-%unicode|string%(3) "OK!"
+string(3) "OK!"
object(Closure)#%d (1) {
- [%u|b%"static"]=>
+ ["static"]=>
array(1) {
- [%u|b%"instance"]=>
+ ["instance"]=>
object(Closure)#%d (0) {
}
}
diff --git a/Zend/tests/cast_to_object.phpt b/Zend/tests/cast_to_object.phpt
index f8d4878475..04d68053e2 100644
--- a/Zend/tests/cast_to_object.phpt
+++ b/Zend/tests/cast_to_object.phpt
Binary files differ
diff --git a/Zend/tests/foreach_018.phpt b/Zend/tests/foreach_018.phpt
new file mode 100644
index 0000000000..3c0be7be19
--- /dev/null
+++ b/Zend/tests/foreach_018.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Foreach on stdClass with properties looking like mangled properties
+--FILE--
+<?php
+
+$obj = (object)[
+ "\0A\0b" => 42,
+ "\0*\0c" => 24,
+];
+
+foreach ($obj as $k => $v) {
+ var_dump($k, $v);
+}
+
+?>
+--EXPECT--
+string(1) "b"
+int(42)
+string(1) "c"
+int(24)
diff --git a/Zend/tests/generators/errors/count_error.phpt b/Zend/tests/generators/errors/count_error.phpt
new file mode 100644
index 0000000000..97e03e7d71
--- /dev/null
+++ b/Zend/tests/generators/errors/count_error.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Generators can't be counted
+--FILE--
+<?php
+
+function gen() { yield; }
+
+$gen = gen();
+
+try {
+ count($gen);
+} catch (Exception $e) {
+ echo $e;
+}
+
+?>
+--EXPECTF--
+Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d
diff --git a/Zend/tests/ns_069.inc b/Zend/tests/ns_069.inc
index 4f186390ad..46d8f8f488 100644
--- a/Zend/tests/ns_069.inc
+++ b/Zend/tests/ns_069.inc
@@ -1,3 +1,3 @@
<?php
-var_dump((binary)__NAMESPACE__);
+var_dump(__NAMESPACE__);
diff --git a/Zend/tests/ns_069.phpt b/Zend/tests/ns_069.phpt
index 63269d0de7..cbfb927049 100644
--- a/Zend/tests/ns_069.phpt
+++ b/Zend/tests/ns_069.phpt
@@ -7,9 +7,9 @@ namespace foo;
class Test {
static function f() {
- var_dump((binary)__NAMESPACE__);
+ var_dump(__NAMESPACE__);
include __DIR__ . '/ns_069.inc';
- var_dump((binary)__NAMESPACE__);
+ var_dump(__NAMESPACE__);
}
}
diff --git a/Zend/tests/object_array_cast.phpt b/Zend/tests/object_array_cast.phpt
index 1cf3dbbd9c..b1c12b579d 100644
--- a/Zend/tests/object_array_cast.phpt
+++ b/Zend/tests/object_array_cast.phpt
@@ -14,11 +14,11 @@ var_dump($obj);
?>
--EXPECT--
object(stdClass)#1 (3) {
- [0]=>
+ ["0"]=>
int(1)
- [1]=>
+ ["1"]=>
int(2)
- [2]=>
+ ["2"]=>
int(3)
}
array(3) {
@@ -38,10 +38,10 @@ array(3) {
int(3)
}
object(stdClass)#1 (3) {
- [0]=>
+ ["0"]=>
int(1)
- [1]=>
+ ["1"]=>
int(2)
- [2]=>
+ ["2"]=>
int(3)
}
diff --git a/Zend/tests/settype_object.phpt b/Zend/tests/settype_object.phpt
index d619dce7e3..7f9e5bc64b 100644
--- a/Zend/tests/settype_object.phpt
+++ b/Zend/tests/settype_object.phpt
Binary files differ
diff --git a/Zend/tests/str_offset_002.phpt b/Zend/tests/str_offset_002.phpt
index 2f5e4ee890..d3a9152905 100644
--- a/Zend/tests/str_offset_002.phpt
+++ b/Zend/tests/str_offset_002.phpt
@@ -1,12 +1,12 @@
---TEST--
-string offset 002
---FILE--
-<?php
-$a = "aaa";
-$x = array(&$a[1]);
-?>
---EXPECTF--
-Fatal error: Uncaught Error: Cannot create references to/from string offsets in %sstr_offset_002.php:3
-Stack trace:
-#0 {main}
- thrown in %sstr_offset_002.php on line 3
+--TEST--
+string offset 002
+--FILE--
+<?php
+$a = "aaa";
+$x = array(&$a[1]);
+?>
+--EXPECTF--
+Fatal error: Uncaught Error: Cannot create references to/from string offsets in %sstr_offset_002.php:3
+Stack trace:
+#0 {main}
+ thrown in %sstr_offset_002.php on line 3
diff --git a/Zend/tests/traits/bugs/case-sensitive.phpt b/Zend/tests/traits/bugs/case-sensitive.phpt
index 13d4188f2f..6a65ccff03 100644
--- a/Zend/tests/traits/bugs/case-sensitive.phpt
+++ b/Zend/tests/traits/bugs/case-sensitive.phpt
@@ -1,23 +1,23 @@
---TEST--
-Check for problems with case sensitivity in compositions
---FILE--
-<?php
-error_reporting(E_ALL);
-
-trait A {
- public function M1() {}
- public function M2() {}
-}
-
-trait B {
- public function M1() {}
- public function M2() {}
-}
-
-class MyClass {
- use A;
- use B;
-}
-?>
---EXPECTF--
-Fatal error: Trait method M1 has not been applied, because there are collisions with other trait methods on MyClass in %s on line %d
+--TEST--
+Check for problems with case sensitivity in compositions
+--FILE--
+<?php
+error_reporting(E_ALL);
+
+trait A {
+ public function M1() {}
+ public function M2() {}
+}
+
+trait B {
+ public function M1() {}
+ public function M2() {}
+}
+
+class MyClass {
+ use A;
+ use B;
+}
+?>
+--EXPECTF--
+Fatal error: Trait method M1 has not been applied, because there are collisions with other trait methods on MyClass in %s on line %d
diff --git a/Zend/tests/traits/static_001.phpt b/Zend/tests/traits/static_001.phpt
index d86cb851b9..5953c008d5 100644
--- a/Zend/tests/traits/static_001.phpt
+++ b/Zend/tests/traits/static_001.phpt
@@ -1,22 +1,22 @@
---TEST--
-Traits with static methods.
---CREDITS--
-Simas Toleikis simast@gmail.com
---FILE--
-<?php
-
- trait TestTrait {
- public static function test() {
- return 'Test';
- }
- }
-
- class A {
- use TestTrait;
- }
-
- echo A::test();
-
-?>
---EXPECT--
+--TEST--
+Traits with static methods.
+--CREDITS--
+Simas Toleikis simast@gmail.com
+--FILE--
+<?php
+
+ trait TestTrait {
+ public static function test() {
+ return 'Test';
+ }
+ }
+
+ class A {
+ use TestTrait;
+ }
+
+ echo A::test();
+
+?>
+--EXPECT--
Test \ No newline at end of file
diff --git a/Zend/tests/traits/static_002.phpt b/Zend/tests/traits/static_002.phpt
index c076085519..64ebf6bf14 100644
--- a/Zend/tests/traits/static_002.phpt
+++ b/Zend/tests/traits/static_002.phpt
@@ -1,23 +1,23 @@
---TEST--
-Traits with static methods referenced using variable.
---CREDITS--
-Simas Toleikis simast@gmail.com
---FILE--
-<?php
-
- trait TestTrait {
- public static function test() {
- return 'Test';
- }
- }
-
- class A {
- use TestTrait;
- }
-
- $class = "A";
- echo $class::test();
-
-?>
---EXPECT--
+--TEST--
+Traits with static methods referenced using variable.
+--CREDITS--
+Simas Toleikis simast@gmail.com
+--FILE--
+<?php
+
+ trait TestTrait {
+ public static function test() {
+ return 'Test';
+ }
+ }
+
+ class A {
+ use TestTrait;
+ }
+
+ $class = "A";
+ echo $class::test();
+
+?>
+--EXPECT--
Test \ No newline at end of file
diff --git a/Zend/tests/traits/static_003.phpt b/Zend/tests/traits/static_003.phpt
index fbe5421c71..01953cf724 100644
--- a/Zend/tests/traits/static_003.phpt
+++ b/Zend/tests/traits/static_003.phpt
@@ -1,27 +1,27 @@
---TEST--
-Traits with late static bindings.
---CREDITS--
-Simas Toleikis simast@gmail.com
---FILE--
-<?php
-
- trait TestTrait {
- public static function test() {
- return static::$test;
- }
- }
-
- class A {
- use TestTrait;
- protected static $test = "Test A";
- }
-
- class B extends A {
- protected static $test = "Test B";
- }
-
- echo B::test();
-
-?>
---EXPECT--
+--TEST--
+Traits with late static bindings.
+--CREDITS--
+Simas Toleikis simast@gmail.com
+--FILE--
+<?php
+
+ trait TestTrait {
+ public static function test() {
+ return static::$test;
+ }
+ }
+
+ class A {
+ use TestTrait;
+ protected static $test = "Test A";
+ }
+
+ class B extends A {
+ protected static $test = "Test B";
+ }
+
+ echo B::test();
+
+?>
+--EXPECT--
Test B \ No newline at end of file
diff --git a/Zend/tests/traits/static_004.phpt b/Zend/tests/traits/static_004.phpt
index c360f457f0..3c3f380908 100644
--- a/Zend/tests/traits/static_004.phpt
+++ b/Zend/tests/traits/static_004.phpt
@@ -1,22 +1,22 @@
---TEST--
-Traits with __callStatic magic method.
---CREDITS--
-Simas Toleikis simast@gmail.com
---FILE--
-<?php
-
- trait TestTrait {
- public static function __callStatic($name, $arguments) {
- return $name;
- }
- }
-
- class A {
- use TestTrait;
- }
-
- echo A::Test();
-
-?>
---EXPECT--
+--TEST--
+Traits with __callStatic magic method.
+--CREDITS--
+Simas Toleikis simast@gmail.com
+--FILE--
+<?php
+
+ trait TestTrait {
+ public static function __callStatic($name, $arguments) {
+ return $name;
+ }
+ }
+
+ class A {
+ use TestTrait;
+ }
+
+ echo A::Test();
+
+?>
+--EXPECT--
Test \ No newline at end of file
diff --git a/Zend/tests/traits/static_forward_static_call.phpt b/Zend/tests/traits/static_forward_static_call.phpt
index 878cf1fcc1..9cda8aee1d 100644
--- a/Zend/tests/traits/static_forward_static_call.phpt
+++ b/Zend/tests/traits/static_forward_static_call.phpt
@@ -1,28 +1,28 @@
---TEST--
-Traits and forward_static_call().
---CREDITS--
-Simas Toleikis simast@gmail.com
---FILE--
-<?php
-
- trait TestTrait {
- public static function test() {
- return 'Forwarded '.forward_static_call(array('A', 'test'));
- }
- }
-
- class A {
- public static function test() {
- return "Test A";
- }
- }
-
- class B extends A {
- use TestTrait;
- }
-
- echo B::test();
-
-?>
---EXPECT--
+--TEST--
+Traits and forward_static_call().
+--CREDITS--
+Simas Toleikis simast@gmail.com
+--FILE--
+<?php
+
+ trait TestTrait {
+ public static function test() {
+ return 'Forwarded '.forward_static_call(array('A', 'test'));
+ }
+ }
+
+ class A {
+ public static function test() {
+ return "Test A";
+ }
+ }
+
+ class B extends A {
+ use TestTrait;
+ }
+
+ echo B::test();
+
+?>
+--EXPECT--
Forwarded Test A \ No newline at end of file
diff --git a/Zend/tests/traits/static_get_called_class.phpt b/Zend/tests/traits/static_get_called_class.phpt
index dc29ecefa2..bd7a603712 100644
--- a/Zend/tests/traits/static_get_called_class.phpt
+++ b/Zend/tests/traits/static_get_called_class.phpt
@@ -1,24 +1,24 @@
---TEST--
-Traits and get_called_class().
---CREDITS--
-Simas Toleikis simast@gmail.com
---FILE--
-<?php
-
- trait TestTrait {
- public static function test() {
- return get_called_class();
- }
- }
-
- class A {
- use TestTrait;
- }
-
- class B extends A { }
-
- echo B::test();
-
-?>
---EXPECT--
+--TEST--
+Traits and get_called_class().
+--CREDITS--
+Simas Toleikis simast@gmail.com
+--FILE--
+<?php
+
+ trait TestTrait {
+ public static function test() {
+ return get_called_class();
+ }
+ }
+
+ class A {
+ use TestTrait;
+ }
+
+ class B extends A { }
+
+ echo B::test();
+
+?>
+--EXPECT--
B \ No newline at end of file
diff --git a/Zend/tests/traits/trait_constant_001.phpt b/Zend/tests/traits/trait_constant_001.phpt
index 0fd8ff921b..590949c2f6 100644
--- a/Zend/tests/traits/trait_constant_001.phpt
+++ b/Zend/tests/traits/trait_constant_001.phpt
@@ -1,36 +1,36 @@
---TEST--
-__TRAIT__: Basics, a constant denoiting the trait of definition.
---FILE--
-<?php
-
-trait TestTrait {
- public static function test() {
- return __TRAIT__;
- }
-}
-
-class Direct {
- use TestTrait;
-}
-
-class IndirectInheritance extends Direct {
-
-}
-
-trait TestTraitIndirect {
- use TestTrait;
-}
-
-class Indirect {
- use TestTraitIndirect;
-}
-
-echo Direct::test()."\n";
-echo IndirectInheritance::test()."\n";
-echo Indirect::test()."\n";
-
-?>
---EXPECT--
-TestTrait
-TestTrait
-TestTrait
+--TEST--
+__TRAIT__: Basics, a constant denoiting the trait of definition.
+--FILE--
+<?php
+
+trait TestTrait {
+ public static function test() {
+ return __TRAIT__;
+ }
+}
+
+class Direct {
+ use TestTrait;
+}
+
+class IndirectInheritance extends Direct {
+
+}
+
+trait TestTraitIndirect {
+ use TestTrait;
+}
+
+class Indirect {
+ use TestTraitIndirect;
+}
+
+echo Direct::test()."\n";
+echo IndirectInheritance::test()."\n";
+echo Indirect::test()."\n";
+
+?>
+--EXPECT--
+TestTrait
+TestTrait
+TestTrait
diff --git a/Zend/tests/traits/trait_constant_002.phpt b/Zend/tests/traits/trait_constant_002.phpt
index 327dd44a64..bbafbf210e 100644
--- a/Zend/tests/traits/trait_constant_002.phpt
+++ b/Zend/tests/traits/trait_constant_002.phpt
@@ -1,27 +1,27 @@
---TEST--
-__TRAIT__: Use outside of traits.
---FILE--
-<?php
-
- class MyClass {
- static function test() {
- return __TRAIT__;
- }
- }
-
- function someFun() {
- return __TRAIT__;
- }
-
-
- $t = __TRAIT__;
- var_dump($t);
- $t = MyClass::test();
- var_dump($t);
- $t = someFun();
- var_dump($t);
-?>
---EXPECT--
-string(0) ""
-string(0) ""
+--TEST--
+__TRAIT__: Use outside of traits.
+--FILE--
+<?php
+
+ class MyClass {
+ static function test() {
+ return __TRAIT__;
+ }
+ }
+
+ function someFun() {
+ return __TRAIT__;
+ }
+
+
+ $t = __TRAIT__;
+ var_dump($t);
+ $t = MyClass::test();
+ var_dump($t);
+ $t = someFun();
+ var_dump($t);
+?>
+--EXPECT--
+string(0) ""
+string(0) ""
string(0) "" \ No newline at end of file
diff --git a/Zend/tests/unset_cv05.phpt b/Zend/tests/unset_cv05.phpt
index 36fea3bc40..2992e624c3 100644
--- a/Zend/tests/unset_cv05.phpt
+++ b/Zend/tests/unset_cv05.phpt
@@ -12,18 +12,11 @@ include(dirname(__FILE__).'/../../ext/session/tests/skipif.inc');
--FILE--
<?php
$_SESSION = "ok\n";
-echo $_SESSION;
session_start();
echo $_SESSION;
echo "\nok\n";
?>
--EXPECTF--
-ok
-
-Warning: session_start(): Cannot send session cookie - headers already sent by (output started at %sunset_cv05.php on line %d
-
-Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at %sunset_cv05.php:%d) in %sunset_cv05.php on line %d
-
Notice: Array to string conversion in %sunset_cv05.php on line %d
Array
ok
diff --git a/Zend/tests/use_function/conditional_function_declaration.phpt b/Zend/tests/use_function/conditional_function_declaration.phpt
index ccfb96103a..02ac0803f0 100644
--- a/Zend/tests/use_function/conditional_function_declaration.phpt
+++ b/Zend/tests/use_function/conditional_function_declaration.phpt
@@ -1,5 +1,5 @@
--TEST--
-function that is conditionally defined at runtime should not cause compiler error
+function that is conditionally defined is subject to symbol use checks
--FILE--
<?php
@@ -13,5 +13,5 @@ use function bar\foo;
echo "Done";
?>
---EXPECT--
-Done
+--EXPECTF--
+Fatal error: Cannot use function bar\foo as foo because the name is already in use in %s on line %d
diff --git a/Zend/tests/use_late_binding_conflict.phpt b/Zend/tests/use_late_binding_conflict.phpt
new file mode 100644
index 0000000000..c8514d0b1a
--- /dev/null
+++ b/Zend/tests/use_late_binding_conflict.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Use conflicts are detected for late-bound classes
+--FILE--
+<?php
+
+/* Reverse declaration order disables early-binding */
+class B extends A {}
+class A {}
+use Foo\B;
+
+?>
+--EXPECTF--
+Fatal error: Cannot use Foo\B as B because the name is already in use in %s on line %d
diff --git a/Zend/tests/use_no_eval_conflict.phpt b/Zend/tests/use_no_eval_conflict.phpt
new file mode 100644
index 0000000000..cf9014b77d
--- /dev/null
+++ b/Zend/tests/use_no_eval_conflict.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Use conflicts should not occur across eval()s
+--FILE--
+<?php
+
+/* It is important that these two eval()s occur on the same line,
+ * as this forces them to have the same filename. */
+eval("class A {}"); eval("use Foo\A;");
+
+?>
+===DONE===
+--EXPECT--
+===DONE===
diff --git a/Zend/zend.h b/Zend/zend.h
index 04c9052e28..ad441ace17 100644
--- a/Zend/zend.h
+++ b/Zend/zend.h
@@ -22,7 +22,7 @@
#ifndef ZEND_H
#define ZEND_H
-#define ZEND_VERSION "3.1.0-dev"
+#define ZEND_VERSION "3.2.0-dev"
#define ZEND_ENGINE_3
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 2479cf0d32..277ec6ea6a 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -2518,12 +2518,10 @@ void module_destructor(zend_module_entry *module) /* {{{ */
}
#if HAVE_LIBDL
-#if !(defined(NETWARE) && defined(APACHE_1_BUILD))
if (module->handle && !getenv("ZEND_DONT_UNLOAD_MODULES")) {
DL_UNLOAD(module->handle);
}
#endif
-#endif
}
/* }}} */
diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c
index 0e04d86dff..dba945129c 100644
--- a/Zend/zend_ast.c
+++ b/Zend/zend_ast.c
@@ -1342,7 +1342,7 @@ simple_list:
case ZEND_ASSIGN_BW_OR: BINARY_OP(" |= ", 90, 91, 90);
case ZEND_ASSIGN_BW_AND: BINARY_OP(" &= ", 90, 91, 90);
case ZEND_ASSIGN_BW_XOR: BINARY_OP(" ^= ", 90, 91, 90);
- case ZEND_POW: BINARY_OP(" **= ", 90, 91, 90);
+ case ZEND_ASSIGN_POW: BINARY_OP(" **= ", 90, 91, 90);
EMPTY_SWITCH_DEFAULT_CASE();
}
break;
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 0fb0036b7f..1faf57cf31 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -1001,7 +1001,7 @@ ZEND_FUNCTION(get_class)
{
zval *obj = NULL;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "|o!", &obj) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "|o", &obj) == FAILURE) {
RETURN_FALSE;
}
@@ -1231,6 +1231,7 @@ ZEND_FUNCTION(get_object_vars)
HashTable *properties;
zend_string *key;
zend_object *zobj;
+ zend_ulong num_key;
ZEND_PARSE_PARAMETERS_START(1, 1)
Z_PARAM_OBJECT(obj)
@@ -1251,32 +1252,50 @@ ZEND_FUNCTION(get_object_vars)
if (!zobj->ce->default_properties_count && properties == zobj->properties && !ZEND_HASH_GET_APPLY_COUNT(properties)) {
/* fast copy */
if (EXPECTED(zobj->handlers == &std_object_handlers)) {
- if (EXPECTED(!(GC_FLAGS(properties) & IS_ARRAY_IMMUTABLE))) {
- GC_REFCOUNT(properties)++;
- }
- RETURN_ARR(properties);
+ RETURN_ARR(zend_proptable_to_symtable(properties, 0));
}
- RETURN_ARR(zend_array_dup(properties));
+ RETURN_ARR(zend_proptable_to_symtable(properties, 1));
} else {
array_init_size(return_value, zend_hash_num_elements(properties));
- ZEND_HASH_FOREACH_STR_KEY_VAL_IND(properties, key, value) {
- if (key) {
- if (zend_check_property_access(zobj, key) == SUCCESS) {
- if (Z_ISREF_P(value) && Z_REFCOUNT_P(value) == 1) {
- value = Z_REFVAL_P(value);
- }
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
- if (ZSTR_VAL(key)[0] == 0) {
- const char *prop_name, *class_name;
- size_t prop_len;
- zend_unmangle_property_name_ex(key, &class_name, &prop_name, &prop_len);
- zend_hash_str_add_new(Z_ARRVAL_P(return_value), prop_name, prop_len, value);
- } else {
- zend_hash_add_new(Z_ARRVAL_P(return_value), key, value);
- }
+ ZEND_HASH_FOREACH_KEY_VAL(properties, num_key, key, value) {
+ zend_bool unmangle = 0;
+ if (Z_TYPE_P(value) == IS_INDIRECT) {
+ value = Z_INDIRECT_P(value);
+ if (UNEXPECTED(Z_ISUNDEF_P(value))) {
+ continue;
+ }
+
+ ZEND_ASSERT(key);
+ if (zend_check_property_access(zobj, key) == FAILURE) {
+ continue;
+ }
+ unmangle = 1;
+ }
+
+ if (Z_ISREF_P(value) && Z_REFCOUNT_P(value) == 1) {
+ value = Z_REFVAL_P(value);
+ }
+ Z_TRY_ADDREF_P(value);
+
+ if (UNEXPECTED(!key)) {
+ /* This case is only possible due to loopholes, e.g. ArrayObject */
+ zend_hash_index_add(Z_ARRVAL_P(return_value), num_key, value);
+ } else if (unmangle && ZSTR_VAL(key)[0] == 0) {
+ const char *prop_name, *class_name;
+ size_t prop_len;
+ zend_unmangle_property_name_ex(key, &class_name, &prop_name, &prop_len);
+ /* We assume here that a mangled property name is never
+ * numeric. This is probably a safe assumption, but
+ * theoretically someone might write an extension with
+ * private, numeric properties. Well, too bad.
+ */
+ zend_hash_str_add_new(Z_ARRVAL_P(return_value), prop_name, prop_len, value);
+ } else {
+ if (ZEND_HANDLE_NUMERIC(key, num_key)) {
+ zend_hash_index_add(Z_ARRVAL_P(return_value), num_key, value);
+ } else {
+ zend_hash_add_new(Z_ARRVAL_P(return_value), key, value);
}
}
} ZEND_HASH_FOREACH_END();
diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c
index eb726484f5..33e9c647ea 100644
--- a/Zend/zend_closures.c
+++ b/Zend/zend_closures.c
@@ -34,9 +34,6 @@
#define ZEND_CLOSURE_PROPERTY_ERROR() \
zend_throw_error(NULL, "Closure object cannot have properties")
-/* reuse bit to mark "fake" closures (it wasn't used for functions before) */
-#define ZEND_ACC_FAKE_CLOSURE ZEND_ACC_INTERFACE
-
typedef struct _zend_closure {
zend_object std;
zend_function func;
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 63359dfa39..3fe46292f2 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -301,12 +301,14 @@ void zend_file_context_begin(zend_file_context *prev_context) /* {{{ */
FC(in_namespace) = 0;
FC(has_bracketed_namespaces) = 0;
FC(declarables).ticks = 0;
+ zend_hash_init(&FC(seen_symbols), 8, NULL, NULL, 0);
}
/* }}} */
void zend_file_context_end(zend_file_context *prev_context) /* {{{ */
{
zend_end_namespace();
+ zend_hash_destroy(&FC(seen_symbols));
CG(file_context) = *prev_context;
}
/* }}} */
@@ -318,12 +320,27 @@ void zend_init_compiler_data_structures(void) /* {{{ */
CG(active_class_entry) = NULL;
CG(in_compilation) = 0;
CG(start_lineno) = 0;
- zend_hash_init(&CG(const_filenames), 8, NULL, NULL, 0);
CG(encoding_declared) = 0;
}
/* }}} */
+static void zend_register_seen_symbol(zend_string *name, uint32_t kind) {
+ zval *zv = zend_hash_find(&FC(seen_symbols), name);
+ if (zv) {
+ Z_LVAL_P(zv) |= kind;
+ } else {
+ zval tmp;
+ ZVAL_LONG(&tmp, kind);
+ zend_hash_add_new(&FC(seen_symbols), name, &tmp);
+ }
+}
+
+static zend_bool zend_have_seen_symbol(zend_string *name, uint32_t kind) {
+ zval *zv = zend_hash_find(&FC(seen_symbols), name);
+ return zv && (Z_LVAL_P(zv) & kind) != 0;
+}
+
ZEND_API void file_handle_dtor(zend_file_handle *fh) /* {{{ */
{
@@ -349,7 +366,6 @@ void shutdown_compiler(void) /* {{{ */
zend_stack_destroy(&CG(loop_var_stack));
zend_stack_destroy(&CG(delayed_oplines_stack));
zend_hash_destroy(&CG(filenames_table));
- zend_hash_destroy(&CG(const_filenames));
zend_arena_destroy(CG(arena));
}
/* }}} */
@@ -1861,22 +1877,6 @@ ZEND_API size_t zend_dirname(char *path, size_t len)
return len;
}
}
-#elif defined(NETWARE)
- /*
- * Find the first occurrence of : from the left
- * move the path pointer to the position just after :
- * increment the len_adjust to the length of path till colon character(inclusive)
- * If there is no character beyond : simple return len
- */
- char *colonpos = NULL;
- colonpos = strchr(path, ':');
- if (colonpos != NULL) {
- len_adjust = ((colonpos - path) + 1);
- path += len_adjust;
- if (len_adjust == len) {
- return len;
- }
- }
#endif
if (len == 0) {
@@ -1901,20 +1901,9 @@ ZEND_API size_t zend_dirname(char *path, size_t len)
}
if (end < path) {
/* No slash found, therefore return '.' */
-#ifdef NETWARE
- if (len_adjust == 0) {
- path[0] = '.';
- path[1] = '\0';
- return 1; /* only one character */
- } else {
- path[0] = '\0';
- return len_adjust;
- }
-#else
path[0] = '.';
path[1] = '\0';
return 1 + len_adjust;
-#endif
}
/* Strip slashes which came before the file name */
@@ -5513,6 +5502,7 @@ static void zend_begin_func_decl(znode *result, zend_op_array *op_array, zend_as
key = zend_build_runtime_definition_key(lcname, decl->lex_pos);
zend_hash_update_ptr(CG(function_table), key, op_array);
+ zend_register_seen_symbol(lcname, ZEND_SYMBOL_FUNCTION);
if (op_array->fn_flags & ZEND_ACC_CLOSURE) {
opline = zend_emit_op_tmp(result, ZEND_DECLARE_LAMBDA_FUNCTION, NULL, NULL);
@@ -5914,6 +5904,8 @@ void zend_compile_class_decl(zend_ast *ast) /* {{{ */
"because the name is already in use", ZSTR_VAL(name));
}
}
+
+ zend_register_seen_symbol(lcname, ZEND_SYMBOL_CLASS);
} else {
name = zend_generate_anon_class_name(decl->lex_pos);
lcname = zend_string_tolower(name);
@@ -6082,19 +6074,19 @@ void zend_compile_class_decl(zend_ast *ast) /* {{{ */
static HashTable *zend_get_import_ht(uint32_t type) /* {{{ */
{
switch (type) {
- case T_CLASS:
+ case ZEND_SYMBOL_CLASS:
if (!FC(imports)) {
FC(imports) = emalloc(sizeof(HashTable));
zend_hash_init(FC(imports), 8, NULL, str_dtor, 0);
}
return FC(imports);
- case T_FUNCTION:
+ case ZEND_SYMBOL_FUNCTION:
if (!FC(imports_function)) {
FC(imports_function) = emalloc(sizeof(HashTable));
zend_hash_init(FC(imports_function), 8, NULL, str_dtor, 0);
}
return FC(imports_function);
- case T_CONST:
+ case ZEND_SYMBOL_CONST:
if (!FC(imports_const)) {
FC(imports_const) = emalloc(sizeof(HashTable));
zend_hash_init(FC(imports_const), 8, NULL, str_dtor, 0);
@@ -6110,11 +6102,11 @@ static HashTable *zend_get_import_ht(uint32_t type) /* {{{ */
static char *zend_get_use_type_str(uint32_t type) /* {{{ */
{
switch (type) {
- case T_CLASS:
+ case ZEND_SYMBOL_CLASS:
return "";
- case T_FUNCTION:
+ case ZEND_SYMBOL_FUNCTION:
return " function";
- case T_CONST:
+ case ZEND_SYMBOL_CONST:
return " const";
EMPTY_SWITCH_DEFAULT_CASE()
}
@@ -6134,41 +6126,6 @@ static void zend_check_already_in_use(uint32_t type, zend_string *old_name, zend
}
/* }}} */
-static void zend_check_use_conflict(
- uint32_t type, zend_string *old_name, zend_string *new_name, zend_string *lookup_name) {
- switch (type) {
- case T_CLASS:
- {
- zend_class_entry *ce = zend_hash_find_ptr(CG(class_table), lookup_name);
- if (ce && ce->type == ZEND_USER_CLASS
- && ce->info.user.filename == CG(compiled_filename)
- ) {
- zend_check_already_in_use(type, old_name, new_name, lookup_name);
- }
- break;
- }
- case T_FUNCTION:
- {
- zend_function *fn = zend_hash_find_ptr(CG(function_table), lookup_name);
- if (fn && fn->type == ZEND_USER_FUNCTION
- && fn->op_array.filename == CG(compiled_filename)
- ) {
- zend_check_already_in_use(type, old_name, new_name, lookup_name);
- }
- break;
- }
- case T_CONST:
- {
- zend_string *filename = zend_hash_find_ptr(&CG(const_filenames), lookup_name);
- if (filename && filename == CG(compiled_filename)) {
- zend_check_already_in_use(type, old_name, new_name, lookup_name);
- }
- break;
- }
- EMPTY_SWITCH_DEFAULT_CASE()
- }
-}
-
void zend_compile_use(zend_ast *ast) /* {{{ */
{
zend_ast_list *list = zend_ast_get_list(ast);
@@ -6176,7 +6133,7 @@ void zend_compile_use(zend_ast *ast) /* {{{ */
zend_string *current_ns = FC(current_namespace);
uint32_t type = ast->attr;
HashTable *current_import = zend_get_import_ht(type);
- zend_bool case_sensitive = type == T_CONST;
+ zend_bool case_sensitive = type == ZEND_SYMBOL_CONST;
for (i = 0; i < list->children; ++i) {
zend_ast *use_ast = list->child[i];
@@ -6214,7 +6171,7 @@ void zend_compile_use(zend_ast *ast) /* {{{ */
lookup_name = zend_string_tolower(new_name);
}
- if (type == T_CLASS && zend_is_reserved_class_name(new_name)) {
+ if (type == ZEND_SYMBOL_CLASS && zend_is_reserved_class_name(new_name)) {
zend_error_noreturn(E_COMPILE_ERROR, "Cannot use %s as %s because '%s' "
"is a special class name", ZSTR_VAL(old_name), ZSTR_VAL(new_name), ZSTR_VAL(new_name));
}
@@ -6225,11 +6182,15 @@ void zend_compile_use(zend_ast *ast) /* {{{ */
ZSTR_VAL(ns_name)[ZSTR_LEN(current_ns)] = '\\';
memcpy(ZSTR_VAL(ns_name) + ZSTR_LEN(current_ns) + 1, ZSTR_VAL(lookup_name), ZSTR_LEN(lookup_name));
- zend_check_use_conflict(type, old_name, new_name, ns_name);
+ if (zend_have_seen_symbol(ns_name, type)) {
+ zend_check_already_in_use(type, old_name, new_name, ns_name);
+ }
zend_string_free(ns_name);
} else {
- zend_check_use_conflict(type, old_name, new_name, lookup_name);
+ if (zend_have_seen_symbol(lookup_name, type)) {
+ zend_check_already_in_use(type, old_name, new_name, lookup_name);
+ }
}
zend_string_addref(old_name);
@@ -6302,7 +6263,7 @@ void zend_compile_const_decl(zend_ast *ast) /* {{{ */
zend_emit_op(NULL, ZEND_DECLARE_CONST, &name_node, &value_node);
- zend_hash_add_ptr(&CG(const_filenames), name, CG(compiled_filename));
+ zend_register_seen_symbol(name, ZEND_SYMBOL_CONST);
}
}
/* }}}*/
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h
index 422404d0a3..ea528811c7 100644
--- a/Zend/zend_compile.h
+++ b/Zend/zend_compile.h
@@ -121,6 +121,8 @@ typedef struct _zend_file_context {
HashTable *imports;
HashTable *imports_function;
HashTable *imports_const;
+
+ HashTable seen_symbols;
} zend_file_context;
typedef union _zend_parser_stack_elem {
@@ -254,6 +256,7 @@ typedef struct _zend_oparray_context {
#define ZEND_ACC_CLOSURE 0x100000
+#define ZEND_ACC_FAKE_CLOSURE 0x40
#define ZEND_ACC_GENERATOR 0x800000
#define ZEND_ACC_NO_RT_ARENA 0x80000
@@ -474,6 +477,7 @@ struct _zend_execute_data {
#define ZEND_CALL_ALLOCATED (1 << 7)
#define ZEND_CALL_GENERATOR (1 << 8)
#define ZEND_CALL_DYNAMIC (1 << 9)
+#define ZEND_CALL_FAKE_CLOSURE (1 << 10)
#define ZEND_CALL_INFO_SHIFT 16
@@ -963,6 +967,11 @@ static zend_always_inline int zend_check_arg_send_type(const zend_function *zf,
#define ZEND_ARRAY_NOT_PACKED (1<<1)
#define ZEND_ARRAY_SIZE_SHIFT 2
+/* For "use" AST nodes and the seen symbol table */
+#define ZEND_SYMBOL_CLASS (1<<0)
+#define ZEND_SYMBOL_FUNCTION (1<<1)
+#define ZEND_SYMBOL_CONST (1<<2)
+
/* Pseudo-opcodes that are used only temporarily during compilation */
#define ZEND_GOTO 253
#define ZEND_BRK 254
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 647428f959..a2df1ef048 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -584,7 +584,7 @@ static inline void zend_assign_to_variable_reference(zval *variable_ptr, zval *v
zval_dtor_func(garbage);
return;
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(variable_ptr);
+ gc_check_possible_root(garbage);
}
}
ZVAL_REF(variable_ptr, ref);
@@ -1294,7 +1294,7 @@ static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim,
zend_long offset;
offset = zend_check_string_offset(dim, BP_VAR_W);
- if (offset < (zend_long)(-Z_STRLEN_P(str))) {
+ if (offset < -(zend_long)Z_STRLEN_P(str)) {
/* Error on negative offset */
zend_error(E_WARNING, "Illegal string offset: " ZEND_LONG_FMT, offset);
if (result) {
@@ -2063,12 +2063,12 @@ static zend_always_inline void i_free_compiled_variables(zend_execute_data *exec
zval *end = cv + EX(func)->op_array.last_var;
while (EXPECTED(cv != end)) {
if (Z_REFCOUNTED_P(cv)) {
- if (!Z_DELREF_P(cv)) {
- zend_refcounted *r = Z_COUNTED_P(cv);
+ zend_refcounted *r = Z_COUNTED_P(cv);
+ if (!--GC_REFCOUNT(r)) {
ZVAL_NULL(cv);
zval_dtor_func(r);
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(cv);
+ gc_check_possible_root(r);
}
}
cv++;
@@ -2659,6 +2659,9 @@ static zend_never_inline zend_execute_data *zend_init_dynamic_call_object(zval *
ZEND_ASSERT(GC_TYPE((zend_object*)fbc->common.prototype) == IS_OBJECT);
GC_REFCOUNT((zend_object*)fbc->common.prototype)++;
call_info |= ZEND_CALL_CLOSURE;
+ if (fbc->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
+ call_info |= ZEND_CALL_FAKE_CLOSURE;
+ }
} else if (object) {
call_info |= ZEND_CALL_RELEASE_THIS;
GC_REFCOUNT(object)++; /* For $this pointer */
@@ -2858,8 +2861,9 @@ already_compiled:
}
/* }}} */
-static zend_never_inline int zend_do_fcall_overloaded(zend_function *fbc, zend_execute_data *call, zval *ret) /* {{{ */
+ZEND_API int ZEND_FASTCALL zend_do_fcall_overloaded(zend_execute_data *call, zval *ret) /* {{{ */
{
+ zend_function *fbc = call->func;
zend_object *object;
/* Not sure what should be done here if it's a static method */
diff --git a/Zend/zend_execute.h b/Zend/zend_execute.h
index 82c6a4a415..c9628d8d26 100644
--- a/Zend/zend_execute.h
+++ b/Zend/zend_execute.h
@@ -101,8 +101,7 @@ static zend_always_inline zval* zend_assign_to_variable(zval *variable_ptr, zval
return variable_ptr;
} else { /* we need to split */
/* optimized version of GC_ZVAL_CHECK_POSSIBLE_ROOT(variable_ptr) */
- if ((Z_COLLECTABLE_P(variable_ptr)) &&
- UNEXPECTED(!GC_INFO(garbage))) {
+ if (UNEXPECTED(GC_MAY_LEAK(garbage))) {
gc_possible_root(garbage);
}
}
@@ -216,12 +215,12 @@ static zend_always_inline void zend_vm_stack_free_extra_args_ex(uint32_t call_in
do {
p--;
if (Z_REFCOUNTED_P(p)) {
- if (!Z_DELREF_P(p)) {
- zend_refcounted *r = Z_COUNTED_P(p);
+ zend_refcounted *r = Z_COUNTED_P(p);
+ if (!--GC_REFCOUNT(r)) {
ZVAL_NULL(p);
zval_dtor_func(r);
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(p);
+ gc_check_possible_root(r);
}
}
} while (p != end);
@@ -320,6 +319,8 @@ ZEND_API void zend_clean_and_cache_symbol_table(zend_array *symbol_table);
void zend_free_compiled_variables(zend_execute_data *execute_data);
void zend_cleanup_unfinished_execution(zend_execute_data *execute_data, uint32_t op_num, uint32_t catch_op_num);
+ZEND_API int ZEND_FASTCALL zend_do_fcall_overloaded(zend_execute_data *call, zval *ret);
+
#define CACHE_ADDR(num) \
((void**)((char*)EX_RUN_TIME_CACHE() + (num)))
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index cba929a7fd..4a4f2f83f3 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -815,9 +815,15 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache) /
}
if (UNEXPECTED(func->op_array.fn_flags & ZEND_ACC_CLOSURE)) {
+ uint32_t call_info;
+
ZEND_ASSERT(GC_TYPE((zend_object*)func->op_array.prototype) == IS_OBJECT);
GC_REFCOUNT((zend_object*)func->op_array.prototype)++;
- ZEND_ADD_CALL_FLAG(call, ZEND_CALL_CLOSURE);
+ call_info = ZEND_CALL_CLOSURE;
+ if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
+ call_info |= ZEND_CALL_FAKE_CLOSURE;
+ }
+ ZEND_ADD_CALL_FLAG(call, call_info);
}
if (func->type == ZEND_USER_FUNCTION) {
diff --git a/Zend/zend_extensions.h b/Zend/zend_extensions.h
index 862c18ad75..c69c641fd5 100644
--- a/Zend/zend_extensions.h
+++ b/Zend/zend_extensions.h
@@ -46,7 +46,7 @@ You can use the following macro to check the extension API version for compatibi
/* The first number is the engine version and the rest is the date (YYYYMMDD).
* This way engine 2/3 API no. is always greater than engine 1 API no.. */
-#define ZEND_EXTENSION_API_NO 320160303
+#define ZEND_EXTENSION_API_NO 320160731
typedef struct _zend_extension_version_info {
int zend_extension_api_no;
diff --git a/Zend/zend_gc.h b/Zend/zend_gc.h
index eb8e500b03..be6b8c44fd 100644
--- a/Zend/zend_gc.h
+++ b/Zend/zend_gc.h
@@ -119,9 +119,6 @@ ZEND_API void gc_reset(void);
ZEND_API int zend_gc_collect_cycles(void);
END_EXTERN_C()
-#define GC_ZVAL_CHECK_POSSIBLE_ROOT(z) \
- gc_check_possible_root((z))
-
#define GC_REMOVE_FROM_BUFFER(p) do { \
zend_refcounted *_p = (zend_refcounted*)(p); \
if (GC_ADDRESS(GC_INFO(_p))) { \
@@ -129,11 +126,23 @@ END_EXTERN_C()
} \
} while (0)
-static zend_always_inline void gc_check_possible_root(zval *z)
+#define GC_MAY_LEAK(ref) \
+ ((GC_TYPE_INFO(ref) & \
+ (GC_INFO_MASK | (GC_COLLECTABLE << GC_FLAGS_SHIFT))) == \
+ (GC_COLLECTABLE << GC_FLAGS_SHIFT))
+
+static zend_always_inline void gc_check_possible_root(zend_refcounted *ref)
{
- ZVAL_DEREF(z);
- if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
- gc_possible_root(Z_COUNTED_P(z));
+ if (GC_TYPE(ref) == IS_REFERENCE) {
+ zval *zv = &((zend_reference*)ref)->val;
+
+ if (!Z_REFCOUNTED_P(zv)) {
+ return;
+ }
+ ref = Z_COUNTED_P(zv);
+ }
+ if (UNEXPECTED(GC_MAY_LEAK(ref))) {
+ gc_possible_root(ref);
}
}
diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h
index fbbf503c41..7662e263b1 100644
--- a/Zend/zend_globals.h
+++ b/Zend/zend_globals.h
@@ -105,8 +105,6 @@ struct _zend_compiler_globals {
uint32_t compiler_options; /* set of ZEND_COMPILE_* constants */
- HashTable const_filenames;
-
zend_oparray_context context;
zend_file_context file_context;
diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c
index fdbdcac5a0..836c5a5a44 100644
--- a/Zend/zend_hash.c
+++ b/Zend/zend_hash.c
@@ -171,7 +171,7 @@ static const uint32_t uninitialized_bucket[-HT_MIN_MASK] =
ZEND_API void ZEND_FASTCALL _zend_hash_init(HashTable *ht, uint32_t nSize, dtor_func_t pDestructor, zend_bool persistent ZEND_FILE_LINE_DC)
{
GC_REFCOUNT(ht) = 1;
- GC_TYPE_INFO(ht) = IS_ARRAY;
+ GC_TYPE_INFO(ht) = IS_ARRAY | (persistent ? 0 : (GC_COLLECTABLE << GC_FLAGS_SHIFT));
ht->u.flags = (persistent ? HASH_FLAG_PERSISTENT : 0) | HASH_FLAG_APPLY_PROTECTION | HASH_FLAG_STATIC_KEYS;
ht->nTableSize = zend_hash_check_size(nSize);
ht->nTableMask = HT_MIN_MASK;
@@ -728,9 +728,6 @@ static zend_always_inline zval *_zend_hash_index_add_or_update_i(HashTable *ht,
ht->pDestructor(&p->val);
}
ZVAL_COPY_VALUE(&p->val, pData);
- if ((zend_long)h >= (zend_long)ht->nNextFreeElement) {
- ht->nNextFreeElement = h < ZEND_LONG_MAX ? h + 1 : ZEND_LONG_MAX;
- }
return &p->val;
} else { /* we have to keep the order :( */
goto convert_to_hash;
@@ -1763,7 +1760,7 @@ ZEND_API HashTable* ZEND_FASTCALL zend_array_dup(HashTable *source)
ALLOC_HASHTABLE(target);
GC_REFCOUNT(target) = 1;
- GC_TYPE_INFO(target) = IS_ARRAY;
+ GC_TYPE_INFO(target) = IS_ARRAY | (GC_COLLECTABLE << GC_FLAGS_SHIFT);
target->nTableSize = source->nTableSize;
target->pDestructor = source->pDestructor;
@@ -2480,6 +2477,122 @@ ZEND_API int ZEND_FASTCALL _zend_handle_numeric_str_ex(const char *key, size_t l
}
}
+/* Takes a "symtable" hashtable (contains integer and non-numeric string keys)
+ * and converts it to a "proptable" (contains only string keys).
+ * If the symtable didn't need duplicating, its refcount is incremented.
+ */
+ZEND_API HashTable* ZEND_FASTCALL zend_symtable_to_proptable(HashTable *ht)
+{
+ zend_ulong num_key;
+ zend_string *str_key;
+ zval *zv;
+
+ if (UNEXPECTED(HT_IS_PACKED(ht))) {
+ goto convert;
+ }
+
+ ZEND_HASH_FOREACH_KEY_VAL(ht, num_key, str_key, zv) {
+ if (!str_key) {
+ goto convert;
+ }
+ } ZEND_HASH_FOREACH_END();
+
+ if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
+ GC_REFCOUNT(ht)++;
+ }
+
+ return ht;
+
+convert:
+ {
+ HashTable *new_ht = emalloc(sizeof(HashTable));
+
+ zend_hash_init(new_ht, zend_hash_num_elements(ht), NULL, ZVAL_PTR_DTOR, 0);
+
+ ZEND_HASH_FOREACH_KEY_VAL(ht, num_key, str_key, zv) {
+ if (!str_key) {
+ str_key = zend_long_to_str(num_key);
+ zend_string_delref(str_key);
+ }
+ do {
+ if (Z_OPT_REFCOUNTED_P(zv)) {
+ if (Z_ISREF_P(zv) && Z_REFCOUNT_P(zv) == 1) {
+ zv = Z_REFVAL_P(zv);
+ if (!Z_OPT_REFCOUNTED_P(zv)) {
+ break;
+ }
+ }
+ Z_ADDREF_P(zv);
+ }
+ } while (0);
+ zend_hash_update(new_ht, str_key, zv);
+ } ZEND_HASH_FOREACH_END();
+
+ return new_ht;
+ }
+}
+
+/* Takes a "proptable" hashtable (contains only string keys) and converts it to
+ * a "symtable" (contains integer and non-numeric string keys).
+ * If the proptable didn't need duplicating, its refcount is incremented.
+ */
+ZEND_API HashTable* ZEND_FASTCALL zend_proptable_to_symtable(HashTable *ht, zend_bool always_duplicate)
+{
+ zend_ulong num_key;
+ zend_string *str_key;
+ zval *zv;
+
+ ZEND_HASH_FOREACH_KEY_VAL(ht, num_key, str_key, zv) {
+ /* The `str_key &&` here might seem redundant: property tables should
+ * only have string keys. Unfortunately, this isn't true, at the very
+ * least because of ArrayObject, which stores a symtable where the
+ * property table should be.
+ */
+ if (str_key && ZEND_HANDLE_NUMERIC(str_key, num_key)) {
+ goto convert;
+ }
+ } ZEND_HASH_FOREACH_END();
+
+ if (always_duplicate) {
+ return zend_array_dup(ht);
+ }
+
+ if (EXPECTED(!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE))) {
+ GC_REFCOUNT(ht)++;
+ }
+
+ return ht;
+
+convert:
+ {
+ HashTable *new_ht = emalloc(sizeof(HashTable));
+
+ zend_hash_init(new_ht, zend_hash_num_elements(ht), NULL, ZVAL_PTR_DTOR, 0);
+
+ ZEND_HASH_FOREACH_KEY_VAL(ht, num_key, str_key, zv) {
+ do {
+ if (Z_OPT_REFCOUNTED_P(zv)) {
+ if (Z_ISREF_P(zv) && Z_REFCOUNT_P(zv) == 1) {
+ zv = Z_REFVAL_P(zv);
+ if (!Z_OPT_REFCOUNTED_P(zv)) {
+ break;
+ }
+ }
+ Z_ADDREF_P(zv);
+ }
+ } while (0);
+ /* Again, thank ArrayObject for `!str_key ||`. */
+ if (!str_key || ZEND_HANDLE_NUMERIC(str_key, num_key)) {
+ zend_hash_index_update(new_ht, num_key, zv);
+ } else {
+ zend_hash_update(new_ht, str_key, zv);
+ }
+ } ZEND_HASH_FOREACH_END();
+
+ return new_ht;
+ }
+}
+
/*
* Local variables:
* tab-width: 4
diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h
index 190551d3f1..e8c01f5dbd 100644
--- a/Zend/zend_hash.h
+++ b/Zend/zend_hash.h
@@ -247,6 +247,8 @@ ZEND_API uint32_t zend_array_count(HashTable *ht);
ZEND_API HashTable* ZEND_FASTCALL zend_array_dup(HashTable *source);
ZEND_API void ZEND_FASTCALL zend_array_destroy(HashTable *ht);
ZEND_API void ZEND_FASTCALL zend_symtable_clean(HashTable *ht);
+ZEND_API HashTable* ZEND_FASTCALL zend_symtable_to_proptable(HashTable *ht);
+ZEND_API HashTable* ZEND_FASTCALL zend_proptable_to_symtable(HashTable *ht, zend_bool always_duplicate);
ZEND_API int ZEND_FASTCALL _zend_handle_numeric_str_ex(const char *key, size_t length, zend_ulong *idx);
diff --git a/Zend/zend_ini_scanner.c b/Zend/zend_ini_scanner.c
index 08749751eb..37b15298cf 100644
--- a/Zend/zend_ini_scanner.c
+++ b/Zend/zend_ini_scanner.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.14.3 */
+/* Generated by re2c 0.13.5 */
#line 1 "Zend/zend_ini_scanner.l"
/*
+----------------------------------------------------------------------+
@@ -453,15 +453,16 @@ yyc_INITIAL:
144, 144, 144, 144, 144, 144, 144, 144,
144, 144, 144, 144, 144, 144, 144, 144,
};
- YYDEBUG(1, *YYCURSOR);
+
+ YYDEBUG(0, *YYCURSOR);
YYFILL(5);
yych = *YYCURSOR;
YYDEBUG(-1, yych);
switch (yych) {
- case '\t': goto yy5;
- case '\n': goto yy7;
- case '\r': goto yy9;
- case ' ': goto yy10;
+ case '\t': goto yy4;
+ case '\n': goto yy6;
+ case '\r': goto yy8;
+ case ' ': goto yy9;
case '!':
case '"':
case '$':
@@ -472,7 +473,7 @@ yyc_INITIAL:
case '{':
case '|':
case '}':
- case '~': goto yy11;
+ case '~': goto yy10;
case '%':
case '\'':
case '*':
@@ -486,29 +487,29 @@ yyc_INITIAL:
case '>':
case '?':
case '@':
- case ']': goto yy13;
- case ';': goto yy14;
- case '=': goto yy16;
+ case ']': goto yy12;
+ case ';': goto yy13;
+ case '=': goto yy15;
case 'F':
- case 'f': goto yy18;
+ case 'f': goto yy17;
case 'N':
- case 'n': goto yy19;
+ case 'n': goto yy18;
case 'O':
- case 'o': goto yy20;
+ case 'o': goto yy19;
case 'T':
- case 't': goto yy21;
+ case 't': goto yy20;
case 'Y':
- case 'y': goto yy22;
- case '[': goto yy23;
- default: goto yy3;
+ case 'y': goto yy21;
+ case '[': goto yy22;
+ default: goto yy2;
}
-yy3:
- YYDEBUG(3, *YYCURSOR);
+yy2:
+ YYDEBUG(2, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy26;
-yy4:
- YYDEBUG(4, *YYCURSOR);
+ goto yy25;
+yy3:
+ YYDEBUG(3, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 483 "Zend/zend_ini_scanner.l"
{ /* Get option name */
@@ -520,94 +521,94 @@ yy4:
RETURN_TOKEN(TC_LABEL, yytext, yyleng);
}
-#line 524 "Zend/zend_ini_scanner.c"
-yy5:
- YYDEBUG(5, *YYCURSOR);
+#line 525 "Zend/zend_ini_scanner.c"
+yy4:
+ YYDEBUG(4, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- goto yy64;
-yy6:
- YYDEBUG(6, *YYCURSOR);
+ goto yy63;
+yy5:
+ YYDEBUG(5, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 629 "Zend/zend_ini_scanner.l"
{
/* eat whitespace */
goto restart;
}
-#line 538 "Zend/zend_ini_scanner.c"
+#line 539 "Zend/zend_ini_scanner.c"
+yy6:
+ YYDEBUG(6, *YYCURSOR);
+ ++YYCURSOR;
yy7:
YYDEBUG(7, *YYCURSOR);
- ++YYCURSOR;
-yy8:
- YYDEBUG(8, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 634 "Zend/zend_ini_scanner.l"
{
SCNG(lineno)++;
return END_OF_LINE;
}
-#line 550 "Zend/zend_ini_scanner.c"
+#line 551 "Zend/zend_ini_scanner.c"
+yy8:
+ YYDEBUG(8, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy66;
+ goto yy7;
yy9:
YYDEBUG(9, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy67;
- goto yy8;
-yy10:
- YYDEBUG(10, *YYCURSOR);
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x08) goto yy26;
- if (yych <= '\t') goto yy63;
- goto yy67;
+ if (yych <= 0x08) goto yy25;
+ if (yych <= '\t') goto yy62;
+ goto yy66;
} else {
- if (yych == '\r') goto yy68;
- goto yy26;
+ if (yych == '\r') goto yy67;
+ goto yy25;
}
} else {
if (yych <= ';') {
- if (yych <= ' ') goto yy65;
- if (yych <= ':') goto yy26;
- goto yy58;
+ if (yych <= ' ') goto yy64;
+ if (yych <= ':') goto yy25;
+ goto yy57;
} else {
- if (yych == '=') goto yy56;
- goto yy26;
+ if (yych == '=') goto yy55;
+ goto yy25;
}
}
-yy11:
- YYDEBUG(11, *YYCURSOR);
+yy10:
+ YYDEBUG(10, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(12, *YYCURSOR);
+ YYDEBUG(11, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 557 "Zend/zend_ini_scanner.l"
{ /* Disallow these chars outside option values */
return yytext[0];
}
-#line 588 "Zend/zend_ini_scanner.c"
+#line 589 "Zend/zend_ini_scanner.c"
+yy12:
+ YYDEBUG(12, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy25;
yy13:
YYDEBUG(13, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy26;
-yy14:
- YYDEBUG(14, *YYCURSOR);
yyaccept = 2;
yych = *(YYMARKER = ++YYCURSOR);
- goto yy59;
- YYDEBUG(15, *YYCURSOR);
+ goto yy58;
+ YYDEBUG(14, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 650 "Zend/zend_ini_scanner.l"
{
return 0;
}
-#line 604 "Zend/zend_ini_scanner.c"
-yy16:
- YYDEBUG(16, *YYCURSOR);
+#line 605 "Zend/zend_ini_scanner.c"
+yy15:
+ YYDEBUG(15, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy57;
-yy17:
- YYDEBUG(17, *YYCURSOR);
+ goto yy56;
+yy16:
+ YYDEBUG(16, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 493 "Zend/zend_ini_scanner.l"
{ /* Start option value */
@@ -618,61 +619,61 @@ yy17:
}
return '=';
}
-#line 622 "Zend/zend_ini_scanner.c"
+#line 623 "Zend/zend_ini_scanner.c"
+yy17:
+ YYDEBUG(17, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'A') goto yy52;
+ if (yych == 'a') goto yy52;
+ goto yy25;
yy18:
YYDEBUG(18, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'A') goto yy53;
- if (yych == 'a') goto yy53;
- goto yy26;
-yy19:
- YYDEBUG(19, *YYCURSOR);
- yych = *++YYCURSOR;
if (yych <= 'U') {
- if (yych == 'O') goto yy44;
- if (yych <= 'T') goto yy26;
- goto yy45;
+ if (yych == 'O') goto yy43;
+ if (yych <= 'T') goto yy25;
+ goto yy44;
} else {
if (yych <= 'o') {
- if (yych <= 'n') goto yy26;
- goto yy44;
+ if (yych <= 'n') goto yy25;
+ goto yy43;
} else {
- if (yych == 'u') goto yy45;
- goto yy26;
+ if (yych == 'u') goto yy44;
+ goto yy25;
}
}
-yy20:
- YYDEBUG(20, *YYCURSOR);
+yy19:
+ YYDEBUG(19, *YYCURSOR);
yych = *++YYCURSOR;
if (yych <= 'N') {
- if (yych == 'F') goto yy38;
- if (yych <= 'M') goto yy26;
- goto yy31;
+ if (yych == 'F') goto yy37;
+ if (yych <= 'M') goto yy25;
+ goto yy30;
} else {
if (yych <= 'f') {
- if (yych <= 'e') goto yy26;
- goto yy38;
+ if (yych <= 'e') goto yy25;
+ goto yy37;
} else {
- if (yych == 'n') goto yy31;
- goto yy26;
+ if (yych == 'n') goto yy30;
+ goto yy25;
}
}
+yy20:
+ YYDEBUG(20, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'R') goto yy35;
+ if (yych == 'r') goto yy35;
+ goto yy25;
yy21:
YYDEBUG(21, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'R') goto yy36;
- if (yych == 'r') goto yy36;
- goto yy26;
+ if (yych == 'E') goto yy26;
+ if (yych == 'e') goto yy26;
+ goto yy25;
yy22:
YYDEBUG(22, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy27;
- if (yych == 'e') goto yy27;
- goto yy26;
-yy23:
- YYDEBUG(23, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(24, *YYCURSOR);
+ YYDEBUG(23, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 408 "Zend/zend_ini_scanner.l"
{ /* Section start */
@@ -684,36 +685,35 @@ yy23:
}
return TC_SECTION;
}
-#line 688 "Zend/zend_ini_scanner.c"
-yy25:
- YYDEBUG(25, *YYCURSOR);
+#line 689 "Zend/zend_ini_scanner.c"
+yy24:
+ YYDEBUG(24, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy26:
- YYDEBUG(26, *YYCURSOR);
+yy25:
+ YYDEBUG(25, *YYCURSOR);
if (yybm[0+yych] & 16) {
- goto yy25;
+ goto yy24;
}
- if (yych <= '=') goto yy4;
- if (yych <= '[') goto yy28;
- goto yy4;
+ if (yych == '[') goto yy27;
+ goto yy3;
+yy26:
+ YYDEBUG(26, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'S') goto yy30;
+ if (yych == 's') goto yy30;
+ goto yy25;
yy27:
YYDEBUG(27, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'S') goto yy31;
- if (yych == 's') goto yy31;
- goto yy26;
-yy28:
- YYDEBUG(28, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(29, *YYCURSOR);
+ YYDEBUG(28, *YYCURSOR);
if (yybm[0+yych] & 32) {
- goto yy28;
+ goto yy27;
}
- YYDEBUG(30, *YYCURSOR);
+ YYDEBUG(29, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 433 "Zend/zend_ini_scanner.l"
{ /* Start of option with offset */
@@ -729,302 +729,302 @@ yy28:
RETURN_TOKEN(TC_OFFSET, yytext, yyleng);
}
#line 732 "Zend/zend_ini_scanner.c"
-yy31:
- YYDEBUG(31, *YYCURSOR);
+yy30:
+ YYDEBUG(30, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(32, *YYCURSOR);
+ YYDEBUG(31, *YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy31;
+ goto yy30;
}
if (yych <= '\'') {
- if (yych <= 0x1F) {
+ if (yych <= ' ') {
if (yych <= '\n') {
- if (yych <= 0x08) goto yy25;
- if (yych <= '\t') goto yy34;
+ if (yych <= 0x08) goto yy24;
+ if (yych <= '\t') goto yy33;
} else {
- if (yych != '\r') goto yy25;
+ if (yych != '\r') goto yy24;
}
} else {
if (yych <= '$') {
- if (yych == '#') goto yy25;
+ if (yych == '#') goto yy24;
} else {
- if (yych != '&') goto yy25;
+ if (yych != '&') goto yy24;
}
}
} else {
if (yych <= 'Z') {
if (yych <= ';') {
- if (yych <= ')') goto yy33;
- if (yych <= ':') goto yy25;
+ if (yych <= ')') goto yy32;
+ if (yych <= ':') goto yy24;
} else {
- if (yych != '=') goto yy25;
+ if (yych != '=') goto yy24;
}
} else {
if (yych <= '^') {
- if (yych <= '[') goto yy28;
- if (yych <= ']') goto yy25;
+ if (yych <= '[') goto yy27;
+ if (yych <= ']') goto yy24;
} else {
- if (yych <= 'z') goto yy25;
- if (yych >= 0x7F) goto yy25;
+ if (yych <= 'z') goto yy24;
+ if (yych >= 0x7F) goto yy24;
}
}
}
-yy33:
- YYDEBUG(33, *YYCURSOR);
+yy32:
+ YYDEBUG(32, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 471 "Zend/zend_ini_scanner.l"
{ /* TRUE value (when used outside option value/offset this causes parse error!) */
RETURN_TOKEN(BOOL_TRUE, "1", 1);
}
#line 782 "Zend/zend_ini_scanner.c"
-yy34:
- YYDEBUG(34, *YYCURSOR);
+yy33:
+ YYDEBUG(33, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
+ YYDEBUG(34, *YYCURSOR);
+ if (yych == '\t') goto yy33;
+ if (yych == ' ') goto yy33;
+ goto yy32;
+yy35:
YYDEBUG(35, *YYCURSOR);
- if (yych == '\t') goto yy34;
- if (yych == ' ') goto yy34;
- goto yy33;
+ yych = *++YYCURSOR;
+ if (yych == 'U') goto yy36;
+ if (yych != 'u') goto yy25;
yy36:
YYDEBUG(36, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'U') goto yy37;
- if (yych != 'u') goto yy26;
+ if (yych == 'E') goto yy30;
+ if (yych == 'e') goto yy30;
+ goto yy25;
yy37:
YYDEBUG(37, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'E') goto yy31;
- if (yych == 'e') goto yy31;
- goto yy26;
+ if (yych == 'F') goto yy38;
+ if (yych != 'f') goto yy25;
yy38:
YYDEBUG(38, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'F') goto yy39;
- if (yych != 'f') goto yy26;
-yy39:
- YYDEBUG(39, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(40, *YYCURSOR);
+ YYDEBUG(39, *YYCURSOR);
if (yych <= '&') {
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x08) goto yy25;
- if (yych <= '\t') goto yy42;
+ if (yych <= 0x08) goto yy24;
+ if (yych <= '\t') goto yy41;
} else {
- if (yych != '\r') goto yy25;
+ if (yych != '\r') goto yy24;
}
} else {
if (yych <= '#') {
- if (yych <= ' ') goto yy39;
- if (yych >= '#') goto yy25;
+ if (yych <= ' ') goto yy38;
+ if (yych >= '#') goto yy24;
} else {
- if (yych == '%') goto yy25;
+ if (yych == '%') goto yy24;
}
}
} else {
if (yych <= '=') {
if (yych <= ':') {
- if (yych <= '\'') goto yy25;
- if (yych >= '*') goto yy25;
+ if (yych <= '\'') goto yy24;
+ if (yych >= '*') goto yy24;
} else {
- if (yych == '<') goto yy25;
+ if (yych == '<') goto yy24;
}
} else {
if (yych <= ']') {
- if (yych == '[') goto yy28;
- goto yy25;
+ if (yych == '[') goto yy27;
+ goto yy24;
} else {
- if (yych <= '^') goto yy41;
- if (yych <= 'z') goto yy25;
- if (yych >= 0x7F) goto yy25;
+ if (yych <= '^') goto yy40;
+ if (yych <= 'z') goto yy24;
+ if (yych >= 0x7F) goto yy24;
}
}
}
-yy41:
- YYDEBUG(41, *YYCURSOR);
+yy40:
+ YYDEBUG(40, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 475 "Zend/zend_ini_scanner.l"
{ /* FALSE value (when used outside option value/offset this causes parse error!)*/
RETURN_TOKEN(BOOL_FALSE, "", 0);
}
#line 856 "Zend/zend_ini_scanner.c"
-yy42:
- YYDEBUG(42, *YYCURSOR);
+yy41:
+ YYDEBUG(41, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
+ YYDEBUG(42, *YYCURSOR);
+ if (yych == '\t') goto yy41;
+ if (yych == ' ') goto yy41;
+ goto yy40;
+yy43:
YYDEBUG(43, *YYCURSOR);
- if (yych == '\t') goto yy42;
- if (yych == ' ') goto yy42;
- goto yy41;
-yy44:
- YYDEBUG(44, *YYCURSOR);
yych = *++YYCURSOR;
if (yych <= '\'') {
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x08) goto yy26;
- if (yych <= '\t') goto yy42;
- goto yy41;
+ if (yych <= 0x08) goto yy25;
+ if (yych <= '\t') goto yy41;
+ goto yy40;
} else {
- if (yych == '\r') goto yy41;
- goto yy26;
+ if (yych == '\r') goto yy40;
+ goto yy25;
}
} else {
if (yych <= '#') {
- if (yych <= ' ') goto yy39;
- if (yych <= '"') goto yy41;
- goto yy26;
+ if (yych <= ' ') goto yy38;
+ if (yych <= '"') goto yy40;
+ goto yy25;
} else {
- if (yych == '%') goto yy26;
- if (yych <= '&') goto yy41;
- goto yy26;
+ if (yych == '%') goto yy25;
+ if (yych <= '&') goto yy40;
+ goto yy25;
}
}
} else {
if (yych <= 'N') {
if (yych <= ';') {
- if (yych <= ')') goto yy41;
- if (yych <= ':') goto yy26;
- goto yy41;
+ if (yych <= ')') goto yy40;
+ if (yych <= ':') goto yy25;
+ goto yy40;
} else {
- if (yych == '=') goto yy41;
- if (yych <= 'M') goto yy26;
- goto yy52;
+ if (yych == '=') goto yy40;
+ if (yych <= 'M') goto yy25;
+ goto yy51;
}
} else {
if (yych <= 'm') {
- if (yych == '^') goto yy41;
- goto yy26;
+ if (yych == '^') goto yy40;
+ goto yy25;
} else {
- if (yych <= 'n') goto yy52;
- if (yych <= 'z') goto yy26;
- if (yych <= '~') goto yy41;
- goto yy26;
+ if (yych <= 'n') goto yy51;
+ if (yych <= 'z') goto yy25;
+ if (yych <= '~') goto yy40;
+ goto yy25;
}
}
}
+yy44:
+ YYDEBUG(44, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'L') goto yy45;
+ if (yych != 'l') goto yy25;
yy45:
YYDEBUG(45, *YYCURSOR);
yych = *++YYCURSOR;
if (yych == 'L') goto yy46;
- if (yych != 'l') goto yy26;
+ if (yych != 'l') goto yy25;
yy46:
YYDEBUG(46, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'L') goto yy47;
- if (yych != 'l') goto yy26;
-yy47:
- YYDEBUG(47, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(48, *YYCURSOR);
+ YYDEBUG(47, *YYCURSOR);
if (yych <= '&') {
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x08) goto yy25;
- if (yych <= '\t') goto yy50;
+ if (yych <= 0x08) goto yy24;
+ if (yych <= '\t') goto yy49;
} else {
- if (yych != '\r') goto yy25;
+ if (yych != '\r') goto yy24;
}
} else {
if (yych <= '#') {
- if (yych <= ' ') goto yy47;
- if (yych >= '#') goto yy25;
+ if (yych <= ' ') goto yy46;
+ if (yych >= '#') goto yy24;
} else {
- if (yych == '%') goto yy25;
+ if (yych == '%') goto yy24;
}
}
} else {
if (yych <= '=') {
if (yych <= ':') {
- if (yych <= '\'') goto yy25;
- if (yych >= '*') goto yy25;
+ if (yych <= '\'') goto yy24;
+ if (yych >= '*') goto yy24;
} else {
- if (yych == '<') goto yy25;
+ if (yych == '<') goto yy24;
}
} else {
if (yych <= ']') {
- if (yych == '[') goto yy28;
- goto yy25;
+ if (yych == '[') goto yy27;
+ goto yy24;
} else {
- if (yych <= '^') goto yy49;
- if (yych <= 'z') goto yy25;
- if (yych >= 0x7F) goto yy25;
+ if (yych <= '^') goto yy48;
+ if (yych <= 'z') goto yy24;
+ if (yych >= 0x7F) goto yy24;
}
}
}
-yy49:
- YYDEBUG(49, *YYCURSOR);
+yy48:
+ YYDEBUG(48, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 479 "Zend/zend_ini_scanner.l"
{
RETURN_TOKEN(NULL_NULL, "", 0);
}
#line 971 "Zend/zend_ini_scanner.c"
-yy50:
- YYDEBUG(50, *YYCURSOR);
+yy49:
+ YYDEBUG(49, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
+ YYDEBUG(50, *YYCURSOR);
+ if (yych == '\t') goto yy49;
+ if (yych == ' ') goto yy49;
+ goto yy48;
+yy51:
YYDEBUG(51, *YYCURSOR);
- if (yych == '\t') goto yy50;
- if (yych == ' ') goto yy50;
- goto yy49;
+ yych = *++YYCURSOR;
+ if (yych == 'E') goto yy38;
+ if (yych == 'e') goto yy38;
+ goto yy25;
yy52:
YYDEBUG(52, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'E') goto yy39;
- if (yych == 'e') goto yy39;
- goto yy26;
+ if (yych == 'L') goto yy53;
+ if (yych != 'l') goto yy25;
yy53:
YYDEBUG(53, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'L') goto yy54;
- if (yych != 'l') goto yy26;
+ if (yych == 'S') goto yy54;
+ if (yych != 's') goto yy25;
yy54:
YYDEBUG(54, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'S') goto yy55;
- if (yych != 's') goto yy26;
+ if (yych == 'E') goto yy38;
+ if (yych == 'e') goto yy38;
+ goto yy25;
yy55:
YYDEBUG(55, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'E') goto yy39;
- if (yych == 'e') goto yy39;
- goto yy26;
-yy56:
- YYDEBUG(56, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
+yy56:
+ YYDEBUG(56, *YYCURSOR);
+ if (yych == '\t') goto yy55;
+ if (yych == ' ') goto yy55;
+ goto yy16;
yy57:
YYDEBUG(57, *YYCURSOR);
- if (yych == '\t') goto yy56;
- if (yych == ' ') goto yy56;
- goto yy17;
-yy58:
- YYDEBUG(58, *YYCURSOR);
++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
-yy59:
- YYDEBUG(59, *YYCURSOR);
+yy58:
+ YYDEBUG(58, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy58;
+ goto yy57;
}
- if (yych >= '\v') goto yy62;
+ if (yych >= '\r') goto yy61;
+yy59:
+ YYDEBUG(59, *YYCURSOR);
+ ++YYCURSOR;
yy60:
YYDEBUG(60, *YYCURSOR);
- ++YYCURSOR;
-yy61:
- YYDEBUG(61, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 639 "Zend/zend_ini_scanner.l"
{ /* Comment */
@@ -1033,96 +1033,96 @@ yy61:
return END_OF_LINE;
}
#line 1036 "Zend/zend_ini_scanner.c"
+yy61:
+ YYDEBUG(61, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy59;
+ goto yy60;
yy62:
YYDEBUG(62, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy60;
- goto yy61;
-yy63:
- YYDEBUG(63, *YYCURSOR);
yyaccept = 0;
YYMARKER = ++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
-yy64:
- YYDEBUG(64, *YYCURSOR);
+yy63:
+ YYDEBUG(63, *YYCURSOR);
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x08) goto yy6;
- if (yych <= '\t') goto yy63;
- goto yy67;
+ if (yych <= 0x08) goto yy5;
+ if (yych <= '\t') goto yy62;
+ goto yy66;
} else {
- if (yych == '\r') goto yy68;
- goto yy6;
+ if (yych == '\r') goto yy67;
+ goto yy5;
}
} else {
if (yych <= ';') {
- if (yych <= ' ') goto yy63;
- if (yych <= ':') goto yy6;
- goto yy58;
+ if (yych <= ' ') goto yy62;
+ if (yych <= ':') goto yy5;
+ goto yy57;
} else {
- if (yych == '=') goto yy56;
- goto yy6;
+ if (yych == '=') goto yy55;
+ goto yy5;
}
}
-yy65:
- YYDEBUG(65, *YYCURSOR);
+yy64:
+ YYDEBUG(64, *YYCURSOR);
yyaccept = 1;
YYMARKER = ++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
- YYDEBUG(66, *YYCURSOR);
+ YYDEBUG(65, *YYCURSOR);
if (yych <= '&') {
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x08) goto yy25;
- if (yych <= '\t') goto yy63;
+ if (yych <= 0x08) goto yy24;
+ if (yych <= '\t') goto yy62;
} else {
- if (yych == '\r') goto yy68;
- goto yy25;
+ if (yych == '\r') goto yy67;
+ goto yy24;
}
} else {
if (yych <= '#') {
- if (yych <= ' ') goto yy65;
- if (yych <= '"') goto yy4;
- goto yy25;
+ if (yych <= ' ') goto yy64;
+ if (yych <= '"') goto yy3;
+ goto yy24;
} else {
- if (yych == '%') goto yy25;
- goto yy4;
+ if (yych == '%') goto yy24;
+ goto yy3;
}
}
} else {
if (yych <= '=') {
if (yych <= ':') {
- if (yych <= '\'') goto yy25;
- if (yych <= ')') goto yy4;
- goto yy25;
+ if (yych <= '\'') goto yy24;
+ if (yych <= ')') goto yy3;
+ goto yy24;
} else {
- if (yych <= ';') goto yy58;
- if (yych <= '<') goto yy25;
- goto yy56;
+ if (yych <= ';') goto yy57;
+ if (yych <= '<') goto yy24;
+ goto yy55;
}
} else {
if (yych <= ']') {
- if (yych == '[') goto yy28;
- goto yy25;
+ if (yych == '[') goto yy27;
+ goto yy24;
} else {
- if (yych <= '^') goto yy4;
- if (yych <= 'z') goto yy25;
- if (yych <= '~') goto yy4;
- goto yy25;
+ if (yych <= '^') goto yy3;
+ if (yych <= 'z') goto yy24;
+ if (yych <= '~') goto yy3;
+ goto yy24;
}
}
}
+yy66:
+ YYDEBUG(66, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy7;
yy67:
YYDEBUG(67, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy8;
-yy68:
- YYDEBUG(68, *YYCURSOR);
++YYCURSOR;
- if ((yych = *YYCURSOR) == '\n') goto yy67;
- goto yy8;
+ if ((yych = *YYCURSOR) == '\n') goto yy66;
+ goto yy7;
}
/* *********************************** */
yyc_ST_DOUBLE_QUOTES:
@@ -1161,15 +1161,15 @@ yyc_ST_DOUBLE_QUOTES:
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
- YYDEBUG(69, *YYCURSOR);
+ YYDEBUG(68, *YYCURSOR);
YYFILL(2);
yych = *YYCURSOR;
- if (yych == '"') goto yy73;
- if (yych == '$') goto yy75;
- YYDEBUG(71, *YYCURSOR);
+ if (yych == '"') goto yy72;
+ if (yych == '$') goto yy74;
+ YYDEBUG(70, *YYCURSOR);
++YYCURSOR;
-yy72:
- YYDEBUG(72, *YYCURSOR);
+yy71:
+ YYDEBUG(71, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 589 "Zend/zend_ini_scanner.l"
{ /* Escape double quoted string contents */
@@ -1208,13 +1208,13 @@ yy72:
return TC_QUOTED_STRING;
}
#line 1211 "Zend/zend_ini_scanner.c"
-yy73:
- YYDEBUG(73, *YYCURSOR);
+yy72:
+ YYDEBUG(72, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy79;
-yy74:
- YYDEBUG(74, *YYCURSOR);
+ goto yy78;
+yy73:
+ YYDEBUG(73, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 584 "Zend/zend_ini_scanner.l"
{ /* Double quoted '"' string ends */
@@ -1222,13 +1222,13 @@ yy74:
return '"';
}
#line 1225 "Zend/zend_ini_scanner.c"
-yy75:
- YYDEBUG(75, *YYCURSOR);
+yy74:
+ YYDEBUG(74, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych != '{') goto yy72;
- YYDEBUG(76, *YYCURSOR);
+ if (yych != '{') goto yy71;
+ YYDEBUG(75, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(77, *YYCURSOR);
+ YYDEBUG(76, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 451 "Zend/zend_ini_scanner.l"
{ /* Variable start */
@@ -1236,17 +1236,17 @@ yy75:
return TC_DOLLAR_CURLY;
}
#line 1239 "Zend/zend_ini_scanner.c"
-yy78:
- YYDEBUG(78, *YYCURSOR);
+yy77:
+ YYDEBUG(77, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy79:
- YYDEBUG(79, *YYCURSOR);
+yy78:
+ YYDEBUG(78, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy78;
+ goto yy77;
}
- goto yy74;
+ goto yy73;
}
/* *********************************** */
yyc_ST_OFFSET:
@@ -1285,87 +1285,87 @@ yyc_ST_OFFSET:
66, 66, 66, 66, 66, 66, 66, 66,
66, 66, 66, 66, 66, 66, 66, 66,
};
- YYDEBUG(80, *YYCURSOR);
+ YYDEBUG(79, *YYCURSOR);
YYFILL(2);
yych = *YYCURSOR;
if (yych <= '-') {
if (yych <= ' ') {
if (yych <= '\n') {
- if (yych <= 0x08) goto yy82;
- if (yych <= '\t') goto yy84;
- goto yy85;
+ if (yych <= 0x08) goto yy81;
+ if (yych <= '\t') goto yy83;
+ goto yy84;
} else {
- if (yych == '\r') goto yy85;
- if (yych >= ' ') goto yy84;
+ if (yych == '\r') goto yy84;
+ if (yych >= ' ') goto yy83;
}
} else {
if (yych <= '$') {
- if (yych == '"') goto yy87;
- if (yych >= '$') goto yy89;
+ if (yych == '"') goto yy86;
+ if (yych >= '$') goto yy88;
} else {
- if (yych == '\'') goto yy90;
- if (yych >= '-') goto yy91;
+ if (yych == '\'') goto yy89;
+ if (yych >= '-') goto yy90;
}
}
} else {
if (yych <= 'Z') {
if (yych <= '9') {
- if (yych <= '.') goto yy92;
- if (yych >= '0') goto yy93;
+ if (yych <= '.') goto yy91;
+ if (yych >= '0') goto yy92;
} else {
- if (yych == ';') goto yy85;
- if (yych >= 'A') goto yy95;
+ if (yych == ';') goto yy84;
+ if (yych >= 'A') goto yy94;
}
} else {
if (yych <= '^') {
- if (yych <= '[') goto yy82;
- if (yych <= '\\') goto yy97;
- if (yych <= ']') goto yy98;
+ if (yych <= '[') goto yy81;
+ if (yych <= '\\') goto yy96;
+ if (yych <= ']') goto yy97;
} else {
- if (yych == '`') goto yy82;
- if (yych <= 'z') goto yy95;
+ if (yych == '`') goto yy81;
+ if (yych <= 'z') goto yy94;
}
}
}
-yy82:
- YYDEBUG(82, *YYCURSOR);
+yy81:
+ YYDEBUG(81, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- goto yy101;
-yy83:
- YYDEBUG(83, *YYCURSOR);
+ goto yy100;
+yy82:
+ YYDEBUG(82, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 575 "Zend/zend_ini_scanner.l"
{ /* Get rest as section/offset value */
RETURN_TOKEN(TC_STRING, yytext, yyleng);
}
#line 1343 "Zend/zend_ini_scanner.c"
-yy84:
- YYDEBUG(84, *YYCURSOR);
+yy83:
+ YYDEBUG(83, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy127;
+ goto yy126;
}
- if (yych == '"') goto yy129;
- if (yych == ']') goto yy130;
- goto yy101;
+ if (yych == '"') goto yy128;
+ if (yych == ']') goto yy129;
+ goto yy100;
+yy84:
+ YYDEBUG(84, *YYCURSOR);
+ ++YYCURSOR;
yy85:
YYDEBUG(85, *YYCURSOR);
- ++YYCURSOR;
-yy86:
- YYDEBUG(86, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 650 "Zend/zend_ini_scanner.l"
{
return 0;
}
#line 1364 "Zend/zend_ini_scanner.c"
+yy86:
+ YYDEBUG(86, *YYCURSOR);
+ ++YYCURSOR;
yy87:
YYDEBUG(87, *YYCURSOR);
- ++YYCURSOR;
-yy88:
- YYDEBUG(88, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 579 "Zend/zend_ini_scanner.l"
{ /* Double quoted '"' string start */
@@ -1373,111 +1373,111 @@ yy88:
return '"';
}
#line 1376 "Zend/zend_ini_scanner.c"
-yy89:
- YYDEBUG(89, *YYCURSOR);
+yy88:
+ YYDEBUG(88, *YYCURSOR);
yych = *++YYCURSOR;
if (yych <= '\\') {
- if (yych <= 0x00) goto yy86;
- if (yych <= '[') goto yy100;
- goto yy105;
+ if (yych <= 0x00) goto yy85;
+ if (yych <= '[') goto yy99;
+ goto yy104;
} else {
- if (yych == '{') goto yy125;
- goto yy100;
+ if (yych == '{') goto yy124;
+ goto yy99;
}
-yy90:
- YYDEBUG(90, *YYCURSOR);
+yy89:
+ YYDEBUG(89, *YYCURSOR);
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy121;
+ goto yy120;
}
- goto yy86;
+ goto yy85;
+yy90:
+ YYDEBUG(90, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '/') goto yy100;
+ if (yych <= '9') goto yy118;
+ goto yy100;
yy91:
YYDEBUG(91, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy101;
- if (yych <= '9') goto yy119;
- goto yy101;
+ if (yych <= '/') goto yy100;
+ if (yych <= '9') goto yy116;
+ goto yy100;
yy92:
YYDEBUG(92, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy101;
- if (yych <= '9') goto yy117;
- goto yy101;
-yy93:
- YYDEBUG(93, *YYCURSOR);
yyaccept = 2;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '\'') {
if (yych <= '\r') {
- if (yych == '\n') goto yy94;
- if (yych <= '\f') goto yy101;
+ if (yych == '\n') goto yy93;
+ if (yych <= '\f') goto yy100;
} else {
- if (yych == '"') goto yy94;
- if (yych <= '&') goto yy101;
+ if (yych == '"') goto yy93;
+ if (yych <= '&') goto yy100;
}
} else {
if (yych <= '9') {
- if (yych == '.') goto yy113;
- if (yych <= '/') goto yy101;
- goto yy115;
+ if (yych == '.') goto yy112;
+ if (yych <= '/') goto yy100;
+ goto yy114;
} else {
if (yych <= ';') {
- if (yych <= ':') goto yy101;
+ if (yych <= ':') goto yy100;
} else {
- if (yych != ']') goto yy101;
+ if (yych != ']') goto yy100;
}
}
}
-yy94:
- YYDEBUG(94, *YYCURSOR);
+yy93:
+ YYDEBUG(93, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 553 "Zend/zend_ini_scanner.l"
{ /* Get number option value as string */
RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
}
#line 1442 "Zend/zend_ini_scanner.c"
-yy95:
- YYDEBUG(95, *YYCURSOR);
+yy94:
+ YYDEBUG(94, *YYCURSOR);
yyaccept = 3;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 16) {
- goto yy111;
+ goto yy110;
}
if (yych <= '"') {
if (yych <= '\f') {
- if (yych != '\n') goto yy101;
+ if (yych != '\n') goto yy100;
} else {
- if (yych <= '\r') goto yy96;
- if (yych <= '!') goto yy101;
+ if (yych <= '\r') goto yy95;
+ if (yych <= '!') goto yy100;
}
} else {
if (yych <= ':') {
- if (yych != '\'') goto yy101;
+ if (yych != '\'') goto yy100;
} else {
- if (yych <= ';') goto yy96;
- if (yych != ']') goto yy101;
+ if (yych <= ';') goto yy95;
+ if (yych != ']') goto yy100;
}
}
-yy96:
- YYDEBUG(96, *YYCURSOR);
+yy95:
+ YYDEBUG(95, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 549 "Zend/zend_ini_scanner.l"
{ /* Get constant option value */
RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
}
#line 1472 "Zend/zend_ini_scanner.c"
+yy96:
+ YYDEBUG(96, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy99;
yy97:
YYDEBUG(97, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy100;
+ ++YYCURSOR;
yy98:
YYDEBUG(98, *YYCURSOR);
- ++YYCURSOR;
-yy99:
- YYDEBUG(99, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 446 "Zend/zend_ini_scanner.l"
{ /* End of section or an option offset */
@@ -1485,296 +1485,294 @@ yy99:
return ']';
}
#line 1488 "Zend/zend_ini_scanner.c"
-yy100:
- YYDEBUG(100, *YYCURSOR);
+yy99:
+ YYDEBUG(99, *YYCURSOR);
yyaccept = 0;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy101:
- YYDEBUG(101, *YYCURSOR);
+yy100:
+ YYDEBUG(100, *YYCURSOR);
if (yybm[0+yych] & 2) {
- goto yy100;
+ goto yy99;
}
- if (yych <= '"') goto yy83;
- if (yych <= '$') goto yy103;
- if (yych <= ';') goto yy83;
- if (yych >= ']') goto yy83;
-yy102:
- YYDEBUG(102, *YYCURSOR);
+ if (yych == '$') goto yy102;
+ if (yych != '\\') goto yy82;
+yy101:
+ YYDEBUG(101, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- goto yy100;
-yy103:
- YYDEBUG(103, *YYCURSOR);
+ goto yy99;
+yy102:
+ YYDEBUG(102, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\\') {
- if (yych <= 0x00) goto yy104;
- if (yych <= '[') goto yy100;
- goto yy105;
+ if (yych <= 0x00) goto yy103;
+ if (yych <= '[') goto yy99;
+ goto yy104;
} else {
- if (yych != '{') goto yy100;
+ if (yych != '{') goto yy99;
}
-yy104:
- YYDEBUG(104, *YYCURSOR);
+yy103:
+ YYDEBUG(103, *YYCURSOR);
YYCURSOR = YYMARKER;
if (yyaccept <= 1) {
- if (yyaccept == 0) {
- goto yy83;
+ if (yyaccept <= 0) {
+ goto yy82;
} else {
- goto yy86;
+ goto yy85;
}
} else {
- if (yyaccept == 2) {
- goto yy94;
+ if (yyaccept <= 2) {
+ goto yy93;
} else {
- goto yy96;
+ goto yy95;
}
}
-yy105:
- YYDEBUG(105, *YYCURSOR);
+yy104:
+ YYDEBUG(104, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 4) {
- goto yy106;
+ goto yy105;
}
- if (yych == '\\') goto yy108;
- goto yy100;
-yy106:
- YYDEBUG(106, *YYCURSOR);
+ if (yych == '\\') goto yy107;
+ goto yy99;
+yy105:
+ YYDEBUG(105, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(107, *YYCURSOR);
+ YYDEBUG(106, *YYCURSOR);
if (yybm[0+yych] & 4) {
- goto yy106;
+ goto yy105;
}
- if (yych == '\\') goto yy110;
- goto yy100;
-yy108:
- YYDEBUG(108, *YYCURSOR);
+ if (yych == '\\') goto yy109;
+ goto yy99;
+yy107:
+ YYDEBUG(107, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(109, *YYCURSOR);
+ YYDEBUG(108, *YYCURSOR);
if (yybm[0+yych] & 4) {
- goto yy106;
+ goto yy105;
}
- if (yych == '\\') goto yy108;
- goto yy100;
-yy110:
- YYDEBUG(110, *YYCURSOR);
+ if (yych == '\\') goto yy107;
+ goto yy99;
+yy109:
+ YYDEBUG(109, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 4) {
- goto yy106;
+ goto yy105;
}
- if (yych == '\\') goto yy108;
- goto yy100;
-yy111:
- YYDEBUG(111, *YYCURSOR);
+ if (yych == '\\') goto yy107;
+ goto yy99;
+yy110:
+ YYDEBUG(110, *YYCURSOR);
yyaccept = 3;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(112, *YYCURSOR);
+ YYDEBUG(111, *YYCURSOR);
if (yybm[0+yych] & 16) {
- goto yy111;
+ goto yy110;
}
if (yych <= '$') {
if (yych <= '\r') {
- if (yych == '\n') goto yy96;
- if (yych <= '\f') goto yy100;
- goto yy96;
+ if (yych == '\n') goto yy95;
+ if (yych <= '\f') goto yy99;
+ goto yy95;
} else {
- if (yych == '"') goto yy96;
- if (yych <= '#') goto yy100;
- goto yy103;
+ if (yych == '"') goto yy95;
+ if (yych <= '#') goto yy99;
+ goto yy102;
}
} else {
if (yych <= ';') {
- if (yych == '\'') goto yy96;
- if (yych <= ':') goto yy100;
- goto yy96;
+ if (yych == '\'') goto yy95;
+ if (yych <= ':') goto yy99;
+ goto yy95;
} else {
- if (yych <= '[') goto yy100;
- if (yych <= '\\') goto yy102;
- if (yych <= ']') goto yy96;
- goto yy100;
+ if (yych <= '[') goto yy99;
+ if (yych <= '\\') goto yy101;
+ if (yych <= ']') goto yy95;
+ goto yy99;
}
}
-yy113:
- YYDEBUG(113, *YYCURSOR);
+yy112:
+ YYDEBUG(112, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(114, *YYCURSOR);
+ YYDEBUG(113, *YYCURSOR);
if (yybm[0+yych] & 32) {
- goto yy113;
+ goto yy112;
}
if (yych <= '$') {
if (yych <= '\r') {
- if (yych == '\n') goto yy94;
- if (yych <= '\f') goto yy100;
- goto yy94;
+ if (yych == '\n') goto yy93;
+ if (yych <= '\f') goto yy99;
+ goto yy93;
} else {
- if (yych == '"') goto yy94;
- if (yych <= '#') goto yy100;
- goto yy103;
+ if (yych == '"') goto yy93;
+ if (yych <= '#') goto yy99;
+ goto yy102;
}
} else {
if (yych <= ';') {
- if (yych == '\'') goto yy94;
- if (yych <= ':') goto yy100;
- goto yy94;
+ if (yych == '\'') goto yy93;
+ if (yych <= ':') goto yy99;
+ goto yy93;
} else {
- if (yych <= '[') goto yy100;
- if (yych <= '\\') goto yy102;
- if (yych <= ']') goto yy94;
- goto yy100;
+ if (yych <= '[') goto yy99;
+ if (yych <= '\\') goto yy101;
+ if (yych <= ']') goto yy93;
+ goto yy99;
}
}
-yy115:
- YYDEBUG(115, *YYCURSOR);
+yy114:
+ YYDEBUG(114, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(116, *YYCURSOR);
+ YYDEBUG(115, *YYCURSOR);
if (yych <= '\'') {
if (yych <= '!') {
if (yych <= '\n') {
- if (yych <= '\t') goto yy100;
- goto yy94;
+ if (yych <= '\t') goto yy99;
+ goto yy93;
} else {
- if (yych == '\r') goto yy94;
- goto yy100;
+ if (yych == '\r') goto yy93;
+ goto yy99;
}
} else {
if (yych <= '#') {
- if (yych <= '"') goto yy94;
- goto yy100;
+ if (yych <= '"') goto yy93;
+ goto yy99;
} else {
- if (yych <= '$') goto yy103;
- if (yych <= '&') goto yy100;
- goto yy94;
+ if (yych <= '$') goto yy102;
+ if (yych <= '&') goto yy99;
+ goto yy93;
}
}
} else {
if (yych <= ':') {
if (yych <= '.') {
- if (yych <= '-') goto yy100;
- goto yy113;
+ if (yych <= '-') goto yy99;
+ goto yy112;
} else {
- if (yych <= '/') goto yy100;
- if (yych <= '9') goto yy115;
- goto yy100;
+ if (yych <= '/') goto yy99;
+ if (yych <= '9') goto yy114;
+ goto yy99;
}
} else {
if (yych <= '[') {
- if (yych <= ';') goto yy94;
- goto yy100;
+ if (yych <= ';') goto yy93;
+ goto yy99;
} else {
- if (yych <= '\\') goto yy102;
- if (yych <= ']') goto yy94;
- goto yy100;
+ if (yych <= '\\') goto yy101;
+ if (yych <= ']') goto yy93;
+ goto yy99;
}
}
}
-yy117:
- YYDEBUG(117, *YYCURSOR);
+yy116:
+ YYDEBUG(116, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(118, *YYCURSOR);
+ YYDEBUG(117, *YYCURSOR);
if (yych <= '&') {
if (yych <= '\r') {
- if (yych == '\n') goto yy94;
- if (yych <= '\f') goto yy100;
- goto yy94;
+ if (yych == '\n') goto yy93;
+ if (yych <= '\f') goto yy99;
+ goto yy93;
} else {
if (yych <= '"') {
- if (yych <= '!') goto yy100;
- goto yy94;
+ if (yych <= '!') goto yy99;
+ goto yy93;
} else {
- if (yych == '$') goto yy103;
- goto yy100;
+ if (yych == '$') goto yy102;
+ goto yy99;
}
}
} else {
if (yych <= ':') {
- if (yych <= '\'') goto yy94;
- if (yych <= '/') goto yy100;
- if (yych <= '9') goto yy117;
- goto yy100;
+ if (yych <= '\'') goto yy93;
+ if (yych <= '/') goto yy99;
+ if (yych <= '9') goto yy116;
+ goto yy99;
} else {
if (yych <= '[') {
- if (yych <= ';') goto yy94;
- goto yy100;
+ if (yych <= ';') goto yy93;
+ goto yy99;
} else {
- if (yych <= '\\') goto yy102;
- if (yych <= ']') goto yy94;
- goto yy100;
+ if (yych <= '\\') goto yy101;
+ if (yych <= ']') goto yy93;
+ goto yy99;
}
}
}
-yy119:
- YYDEBUG(119, *YYCURSOR);
+yy118:
+ YYDEBUG(118, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(120, *YYCURSOR);
+ YYDEBUG(119, *YYCURSOR);
if (yych <= '&') {
if (yych <= '\r') {
- if (yych == '\n') goto yy94;
- if (yych <= '\f') goto yy100;
- goto yy94;
+ if (yych == '\n') goto yy93;
+ if (yych <= '\f') goto yy99;
+ goto yy93;
} else {
if (yych <= '"') {
- if (yych <= '!') goto yy100;
- goto yy94;
+ if (yych <= '!') goto yy99;
+ goto yy93;
} else {
- if (yych == '$') goto yy103;
- goto yy100;
+ if (yych == '$') goto yy102;
+ goto yy99;
}
}
} else {
if (yych <= ':') {
- if (yych <= '\'') goto yy94;
- if (yych <= '/') goto yy100;
- if (yych <= '9') goto yy119;
- goto yy100;
+ if (yych <= '\'') goto yy93;
+ if (yych <= '/') goto yy99;
+ if (yych <= '9') goto yy118;
+ goto yy99;
} else {
if (yych <= '[') {
- if (yych <= ';') goto yy94;
- goto yy100;
+ if (yych <= ';') goto yy93;
+ goto yy99;
} else {
- if (yych <= '\\') goto yy102;
- if (yych <= ']') goto yy94;
- goto yy100;
+ if (yych <= '\\') goto yy101;
+ if (yych <= ']') goto yy93;
+ goto yy99;
}
}
}
-yy121:
- YYDEBUG(121, *YYCURSOR);
+yy120:
+ YYDEBUG(120, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(122, *YYCURSOR);
+ YYDEBUG(121, *YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy121;
+ goto yy120;
}
- YYDEBUG(123, *YYCURSOR);
+ YYDEBUG(122, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(124, *YYCURSOR);
+ YYDEBUG(123, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 418 "Zend/zend_ini_scanner.l"
{ /* Raw string */
@@ -1785,60 +1783,59 @@ yy121:
}
RETURN_TOKEN(TC_RAW, yytext, yyleng);
}
-#line 1789 "Zend/zend_ini_scanner.c"
-yy125:
- YYDEBUG(125, *YYCURSOR);
+#line 1787 "Zend/zend_ini_scanner.c"
+yy124:
+ YYDEBUG(124, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(126, *YYCURSOR);
+ YYDEBUG(125, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 451 "Zend/zend_ini_scanner.l"
{ /* Variable start */
yy_push_state(ST_VARNAME);
return TC_DOLLAR_CURLY;
}
-#line 1800 "Zend/zend_ini_scanner.c"
-yy127:
- YYDEBUG(127, *YYCURSOR);
+#line 1798 "Zend/zend_ini_scanner.c"
+yy126:
+ YYDEBUG(126, *YYCURSOR);
yyaccept = 0;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(128, *YYCURSOR);
+ YYDEBUG(127, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy127;
+ goto yy126;
}
if (yych <= '$') {
if (yych <= '\r') {
- if (yych <= 0x08) goto yy100;
- if (yych <= '\n') goto yy83;
- if (yych <= '\f') goto yy100;
- goto yy83;
+ if (yych == '\n') goto yy82;
+ if (yych <= '\f') goto yy99;
+ goto yy82;
} else {
- if (yych == '"') goto yy129;
- if (yych <= '#') goto yy100;
- goto yy103;
+ if (yych == '"') goto yy128;
+ if (yych <= '#') goto yy99;
+ goto yy102;
}
} else {
if (yych <= ';') {
- if (yych == '\'') goto yy83;
- if (yych <= ':') goto yy100;
- goto yy83;
+ if (yych == '\'') goto yy82;
+ if (yych <= ':') goto yy99;
+ goto yy82;
} else {
- if (yych <= '[') goto yy100;
- if (yych <= '\\') goto yy102;
- if (yych <= ']') goto yy130;
- goto yy100;
+ if (yych <= '[') goto yy99;
+ if (yych <= '\\') goto yy101;
+ if (yych <= ']') goto yy129;
+ goto yy99;
}
}
+yy128:
+ YYDEBUG(128, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy87;
yy129:
YYDEBUG(129, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy88;
-yy130:
- YYDEBUG(130, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy99;
+ goto yy98;
}
/* *********************************** */
yyc_ST_RAW:
@@ -1877,42 +1874,42 @@ yyc_ST_RAW:
64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64,
};
- YYDEBUG(131, *YYCURSOR);
+ YYDEBUG(130, *YYCURSOR);
YYFILL(3);
yych = *YYCURSOR;
if (yych <= '\f') {
if (yych <= 0x08) {
- if (yych >= 0x01) goto yy135;
+ if (yych >= 0x01) goto yy134;
} else {
- if (yych <= '\t') goto yy137;
- if (yych <= '\n') goto yy138;
- goto yy135;
+ if (yych <= '\t') goto yy136;
+ if (yych <= '\n') goto yy137;
+ goto yy134;
}
} else {
if (yych <= ' ') {
- if (yych <= '\r') goto yy140;
- if (yych <= 0x1F) goto yy135;
- goto yy137;
+ if (yych <= '\r') goto yy139;
+ if (yych <= 0x1F) goto yy134;
+ goto yy136;
} else {
- if (yych == ';') goto yy141;
- goto yy135;
+ if (yych == ';') goto yy140;
+ goto yy134;
}
}
- YYDEBUG(133, *YYCURSOR);
+ YYDEBUG(132, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(134, *YYCURSOR);
+ YYDEBUG(133, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 645 "Zend/zend_ini_scanner.l"
{ /* End of option value (if EOF is reached before EOL */
BEGIN(INITIAL);
return END_OF_LINE;
}
-#line 1911 "Zend/zend_ini_scanner.c"
+#line 1908 "Zend/zend_ini_scanner.c"
+yy134:
+ YYDEBUG(134, *YYCURSOR);
+ ++YYCURSOR;
yy135:
YYDEBUG(135, *YYCURSOR);
- ++YYCURSOR;
-yy136:
- YYDEBUG(136, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 502 "Zend/zend_ini_scanner.l"
{ /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
@@ -1951,30 +1948,30 @@ end_raw_value_chars:
}
RETURN_TOKEN(TC_RAW, yytext, yyleng);
}
-#line 1955 "Zend/zend_ini_scanner.c"
-yy137:
- YYDEBUG(137, *YYCURSOR);
+#line 1952 "Zend/zend_ini_scanner.c"
+yy136:
+ YYDEBUG(136, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '\r') {
- if (yych <= 0x08) goto yy136;
- if (yych <= '\n') goto yy149;
- if (yych <= '\f') goto yy136;
- goto yy149;
+ if (yych <= 0x08) goto yy135;
+ if (yych <= '\n') goto yy148;
+ if (yych <= '\f') goto yy135;
+ goto yy148;
} else {
if (yych <= ' ') {
- if (yych <= 0x1F) goto yy136;
- goto yy149;
+ if (yych <= 0x1F) goto yy135;
+ goto yy148;
} else {
- if (yych == ';') goto yy149;
- goto yy136;
+ if (yych == ';') goto yy148;
+ goto yy135;
}
}
+yy137:
+ YYDEBUG(137, *YYCURSOR);
+ ++YYCURSOR;
yy138:
YYDEBUG(138, *YYCURSOR);
- ++YYCURSOR;
-yy139:
- YYDEBUG(139, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 543 "Zend/zend_ini_scanner.l"
{ /* End of option value */
@@ -1982,33 +1979,33 @@ yy139:
SCNG(lineno)++;
return END_OF_LINE;
}
-#line 1986 "Zend/zend_ini_scanner.c"
+#line 1983 "Zend/zend_ini_scanner.c"
+yy139:
+ YYDEBUG(139, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy146;
+ goto yy138;
yy140:
YYDEBUG(140, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy147;
- goto yy139;
-yy141:
- YYDEBUG(141, *YYCURSOR);
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
- goto yy143;
-yy142:
- YYDEBUG(142, *YYCURSOR);
+ goto yy142;
+yy141:
+ YYDEBUG(141, *YYCURSOR);
++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
-yy143:
- YYDEBUG(143, *YYCURSOR);
+yy142:
+ YYDEBUG(142, *YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy142;
+ goto yy141;
}
- if (yych >= '\v') goto yy146;
+ if (yych >= '\r') goto yy145;
+yy143:
+ YYDEBUG(143, *YYCURSOR);
+ ++YYCURSOR;
yy144:
YYDEBUG(144, *YYCURSOR);
- ++YYCURSOR;
-yy145:
- YYDEBUG(145, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 639 "Zend/zend_ini_scanner.l"
{ /* Comment */
@@ -2016,48 +2013,46 @@ yy145:
SCNG(lineno)++;
return END_OF_LINE;
}
-#line 2020 "Zend/zend_ini_scanner.c"
+#line 2017 "Zend/zend_ini_scanner.c"
+yy145:
+ YYDEBUG(145, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy143;
+ goto yy144;
yy146:
YYDEBUG(146, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == '\n') goto yy144;
- goto yy145;
+ goto yy138;
yy147:
YYDEBUG(147, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy139;
-yy148:
- YYDEBUG(148, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
-yy149:
- YYDEBUG(149, *YYCURSOR);
+yy148:
+ YYDEBUG(148, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy148;
+ goto yy147;
}
if (yych <= '\f') {
- if (yych <= 0x08) goto yy150;
- if (yych <= '\n') goto yy147;
+ if (yych == '\n') goto yy146;
} else {
- if (yych <= '\r') goto yy151;
- if (yych == ';') goto yy142;
+ if (yych <= '\r') goto yy150;
+ if (yych == ';') goto yy141;
}
-yy150:
- YYDEBUG(150, *YYCURSOR);
+ YYDEBUG(149, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 629 "Zend/zend_ini_scanner.l"
{
/* eat whitespace */
goto restart;
}
-#line 2056 "Zend/zend_ini_scanner.c"
-yy151:
- YYDEBUG(151, *YYCURSOR);
+#line 2051 "Zend/zend_ini_scanner.c"
+yy150:
+ YYDEBUG(150, *YYCURSOR);
++YYCURSOR;
- if ((yych = *YYCURSOR) == '\n') goto yy147;
- goto yy139;
+ if ((yych = *YYCURSOR) == '\n') goto yy146;
+ goto yy138;
}
/* *********************************** */
yyc_ST_SECTION_RAW:
@@ -2096,44 +2091,44 @@ yyc_ST_SECTION_RAW:
128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128,
};
- YYDEBUG(152, *YYCURSOR);
+ YYDEBUG(151, *YYCURSOR);
YYFILL(3);
yych = *YYCURSOR;
if (yych <= '\f') {
- if (yych == '\n') goto yy156;
+ if (yych == '\n') goto yy155;
} else {
- if (yych <= '\r') goto yy156;
- if (yych == ']') goto yy158;
+ if (yych <= '\r') goto yy155;
+ if (yych == ']') goto yy157;
}
- YYDEBUG(154, *YYCURSOR);
+ YYDEBUG(153, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy165;
-yy155:
- YYDEBUG(155, *YYCURSOR);
+ goto yy164;
+yy154:
+ YYDEBUG(154, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 539 "Zend/zend_ini_scanner.l"
{ /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
RETURN_TOKEN(TC_RAW, yytext, yyleng);
}
-#line 2120 "Zend/zend_ini_scanner.c"
-yy156:
- YYDEBUG(156, *YYCURSOR);
+#line 2115 "Zend/zend_ini_scanner.c"
+yy155:
+ YYDEBUG(155, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(157, *YYCURSOR);
+ YYDEBUG(156, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 650 "Zend/zend_ini_scanner.l"
{
return 0;
}
-#line 2130 "Zend/zend_ini_scanner.c"
-yy158:
- YYDEBUG(158, *YYCURSOR);
+#line 2125 "Zend/zend_ini_scanner.c"
+yy157:
+ YYDEBUG(157, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy161;
-yy159:
- YYDEBUG(159, *YYCURSOR);
+ goto yy160;
+yy158:
+ YYDEBUG(158, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 427 "Zend/zend_ini_scanner.l"
{ /* End of section */
@@ -2141,41 +2136,40 @@ yy159:
SCNG(lineno)++;
return ']';
}
-#line 2145 "Zend/zend_ini_scanner.c"
-yy160:
- YYDEBUG(160, *YYCURSOR);
+#line 2140 "Zend/zend_ini_scanner.c"
+yy159:
+ YYDEBUG(159, *YYCURSOR);
++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
-yy161:
- YYDEBUG(161, *YYCURSOR);
+yy160:
+ YYDEBUG(160, *YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy160;
+ goto yy159;
}
- if (yych <= 0x08) goto yy159;
- if (yych <= '\n') goto yy162;
- if (yych == '\r') goto yy163;
- goto yy159;
+ if (yych == '\n') goto yy161;
+ if (yych == '\r') goto yy162;
+ goto yy158;
+yy161:
+ YYDEBUG(161, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy158;
yy162:
YYDEBUG(162, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy159;
+ if (yych == '\n') goto yy161;
+ goto yy158;
yy163:
YYDEBUG(163, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy162;
- goto yy159;
-yy164:
- YYDEBUG(164, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy165:
- YYDEBUG(165, *YYCURSOR);
+yy164:
+ YYDEBUG(164, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy164;
+ goto yy163;
}
- goto yy155;
+ goto yy154;
}
/* *********************************** */
yyc_ST_SECTION_VALUE:
@@ -2214,203 +2208,203 @@ yyc_ST_SECTION_VALUE:
132, 132, 132, 132, 132, 132, 132, 132,
132, 132, 132, 132, 132, 132, 132, 132,
};
- YYDEBUG(166, *YYCURSOR);
+ YYDEBUG(165, *YYCURSOR);
YYFILL(3);
yych = *YYCURSOR;
if (yych <= '-') {
if (yych <= ' ') {
if (yych <= '\n') {
- if (yych <= 0x08) goto yy168;
- if (yych <= '\t') goto yy170;
- goto yy171;
+ if (yych <= 0x08) goto yy167;
+ if (yych <= '\t') goto yy169;
+ goto yy170;
} else {
- if (yych == '\r') goto yy171;
- if (yych >= ' ') goto yy170;
+ if (yych == '\r') goto yy170;
+ if (yych >= ' ') goto yy169;
}
} else {
if (yych <= '$') {
- if (yych == '"') goto yy173;
- if (yych >= '$') goto yy175;
+ if (yych == '"') goto yy172;
+ if (yych >= '$') goto yy174;
} else {
- if (yych == '\'') goto yy176;
- if (yych >= '-') goto yy177;
+ if (yych == '\'') goto yy175;
+ if (yych >= '-') goto yy176;
}
}
} else {
if (yych <= 'Z') {
if (yych <= '9') {
- if (yych <= '.') goto yy178;
- if (yych >= '0') goto yy179;
+ if (yych <= '.') goto yy177;
+ if (yych >= '0') goto yy178;
} else {
- if (yych == ';') goto yy171;
- if (yych >= 'A') goto yy181;
+ if (yych == ';') goto yy170;
+ if (yych >= 'A') goto yy180;
}
} else {
if (yych <= '^') {
- if (yych <= '[') goto yy168;
- if (yych <= '\\') goto yy183;
- if (yych <= ']') goto yy184;
+ if (yych <= '[') goto yy167;
+ if (yych <= '\\') goto yy182;
+ if (yych <= ']') goto yy183;
} else {
- if (yych == '`') goto yy168;
- if (yych <= 'z') goto yy181;
+ if (yych == '`') goto yy167;
+ if (yych <= 'z') goto yy180;
}
}
}
-yy168:
- YYDEBUG(168, *YYCURSOR);
+yy167:
+ YYDEBUG(167, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- goto yy191;
-yy169:
- YYDEBUG(169, *YYCURSOR);
+ goto yy190;
+yy168:
+ YYDEBUG(168, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 575 "Zend/zend_ini_scanner.l"
{ /* Get rest as section/offset value */
RETURN_TOKEN(TC_STRING, yytext, yyleng);
}
-#line 2272 "Zend/zend_ini_scanner.c"
-yy170:
- YYDEBUG(170, *YYCURSOR);
+#line 2266 "Zend/zend_ini_scanner.c"
+yy169:
+ YYDEBUG(169, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 0x1F) {
- if (yych == '\t') goto yy217;
- goto yy191;
+ if (yych == '\t') goto yy216;
+ goto yy190;
} else {
- if (yych <= ' ') goto yy217;
- if (yych == '"') goto yy219;
- goto yy191;
+ if (yych <= ' ') goto yy216;
+ if (yych == '"') goto yy218;
+ goto yy190;
}
+yy170:
+ YYDEBUG(170, *YYCURSOR);
+ ++YYCURSOR;
yy171:
YYDEBUG(171, *YYCURSOR);
- ++YYCURSOR;
-yy172:
- YYDEBUG(172, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 650 "Zend/zend_ini_scanner.l"
{
return 0;
}
-#line 2295 "Zend/zend_ini_scanner.c"
+#line 2289 "Zend/zend_ini_scanner.c"
+yy172:
+ YYDEBUG(172, *YYCURSOR);
+ ++YYCURSOR;
yy173:
YYDEBUG(173, *YYCURSOR);
- ++YYCURSOR;
-yy174:
- YYDEBUG(174, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 579 "Zend/zend_ini_scanner.l"
{ /* Double quoted '"' string start */
yy_push_state(ST_DOUBLE_QUOTES);
return '"';
}
-#line 2307 "Zend/zend_ini_scanner.c"
-yy175:
- YYDEBUG(175, *YYCURSOR);
+#line 2301 "Zend/zend_ini_scanner.c"
+yy174:
+ YYDEBUG(174, *YYCURSOR);
yych = *++YYCURSOR;
if (yych <= '\\') {
- if (yych <= 0x00) goto yy172;
- if (yych <= '[') goto yy190;
- goto yy195;
+ if (yych <= 0x00) goto yy171;
+ if (yych <= '[') goto yy189;
+ goto yy194;
} else {
- if (yych == '{') goto yy215;
- goto yy190;
+ if (yych == '{') goto yy214;
+ goto yy189;
}
-yy176:
- YYDEBUG(176, *YYCURSOR);
+yy175:
+ YYDEBUG(175, *YYCURSOR);
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy211;
+ goto yy210;
}
- goto yy172;
+ goto yy171;
+yy176:
+ YYDEBUG(176, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '/') goto yy190;
+ if (yych <= '9') goto yy208;
+ goto yy190;
yy177:
YYDEBUG(177, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy191;
- if (yych <= '9') goto yy209;
- goto yy191;
+ if (yych <= '/') goto yy190;
+ if (yych <= '9') goto yy206;
+ goto yy190;
yy178:
YYDEBUG(178, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy191;
- if (yych <= '9') goto yy207;
- goto yy191;
-yy179:
- YYDEBUG(179, *YYCURSOR);
yyaccept = 2;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '\'') {
if (yych <= '\r') {
- if (yych == '\n') goto yy180;
- if (yych <= '\f') goto yy191;
+ if (yych == '\n') goto yy179;
+ if (yych <= '\f') goto yy190;
} else {
- if (yych == '"') goto yy180;
- if (yych <= '&') goto yy191;
+ if (yych == '"') goto yy179;
+ if (yych <= '&') goto yy190;
}
} else {
if (yych <= '9') {
- if (yych == '.') goto yy203;
- if (yych <= '/') goto yy191;
- goto yy205;
+ if (yych == '.') goto yy202;
+ if (yych <= '/') goto yy190;
+ goto yy204;
} else {
if (yych <= ';') {
- if (yych <= ':') goto yy191;
+ if (yych <= ':') goto yy190;
} else {
- if (yych != ']') goto yy191;
+ if (yych != ']') goto yy190;
}
}
}
-yy180:
- YYDEBUG(180, *YYCURSOR);
+yy179:
+ YYDEBUG(179, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 553 "Zend/zend_ini_scanner.l"
{ /* Get number option value as string */
RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
}
-#line 2373 "Zend/zend_ini_scanner.c"
-yy181:
- YYDEBUG(181, *YYCURSOR);
+#line 2367 "Zend/zend_ini_scanner.c"
+yy180:
+ YYDEBUG(180, *YYCURSOR);
yyaccept = 3;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 32) {
- goto yy201;
+ goto yy200;
}
if (yych <= '"') {
if (yych <= '\f') {
- if (yych != '\n') goto yy191;
+ if (yych != '\n') goto yy190;
} else {
- if (yych <= '\r') goto yy182;
- if (yych <= '!') goto yy191;
+ if (yych <= '\r') goto yy181;
+ if (yych <= '!') goto yy190;
}
} else {
if (yych <= ':') {
- if (yych != '\'') goto yy191;
+ if (yych != '\'') goto yy190;
} else {
- if (yych <= ';') goto yy182;
- if (yych != ']') goto yy191;
+ if (yych <= ';') goto yy181;
+ if (yych != ']') goto yy190;
}
}
-yy182:
- YYDEBUG(182, *YYCURSOR);
+yy181:
+ YYDEBUG(181, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 549 "Zend/zend_ini_scanner.l"
{ /* Get constant option value */
RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
}
-#line 2403 "Zend/zend_ini_scanner.c"
+#line 2397 "Zend/zend_ini_scanner.c"
+yy182:
+ YYDEBUG(182, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy189;
yy183:
YYDEBUG(183, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy190;
-yy184:
- YYDEBUG(184, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy187;
-yy185:
- YYDEBUG(185, *YYCURSOR);
+ goto yy186;
+yy184:
+ YYDEBUG(184, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 427 "Zend/zend_ini_scanner.l"
{ /* End of section */
@@ -2418,320 +2412,317 @@ yy185:
SCNG(lineno)++;
return ']';
}
-#line 2422 "Zend/zend_ini_scanner.c"
-yy186:
- YYDEBUG(186, *YYCURSOR);
+#line 2416 "Zend/zend_ini_scanner.c"
+yy185:
+ YYDEBUG(185, *YYCURSOR);
++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
-yy187:
- YYDEBUG(187, *YYCURSOR);
+yy186:
+ YYDEBUG(186, *YYCURSOR);
if (yybm[0+yych] & 2) {
- goto yy186;
+ goto yy185;
}
- if (yych <= 0x08) goto yy185;
- if (yych <= '\n') goto yy188;
- if (yych == '\r') goto yy189;
- goto yy185;
+ if (yych == '\n') goto yy187;
+ if (yych == '\r') goto yy188;
+ goto yy184;
+yy187:
+ YYDEBUG(187, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy184;
yy188:
YYDEBUG(188, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy185;
+ if (yych == '\n') goto yy187;
+ goto yy184;
yy189:
YYDEBUG(189, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy188;
- goto yy185;
-yy190:
- YYDEBUG(190, *YYCURSOR);
yyaccept = 0;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy191:
- YYDEBUG(191, *YYCURSOR);
+yy190:
+ YYDEBUG(190, *YYCURSOR);
if (yybm[0+yych] & 4) {
- goto yy190;
+ goto yy189;
}
- if (yych <= '"') goto yy169;
- if (yych <= '$') goto yy193;
- if (yych <= ';') goto yy169;
- if (yych >= ']') goto yy169;
-yy192:
- YYDEBUG(192, *YYCURSOR);
+ if (yych == '$') goto yy192;
+ if (yych != '\\') goto yy168;
+yy191:
+ YYDEBUG(191, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- goto yy190;
-yy193:
- YYDEBUG(193, *YYCURSOR);
+ goto yy189;
+yy192:
+ YYDEBUG(192, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\\') {
- if (yych <= 0x00) goto yy194;
- if (yych <= '[') goto yy190;
- goto yy195;
+ if (yych <= 0x00) goto yy193;
+ if (yych <= '[') goto yy189;
+ goto yy194;
} else {
- if (yych != '{') goto yy190;
+ if (yych != '{') goto yy189;
}
-yy194:
- YYDEBUG(194, *YYCURSOR);
+yy193:
+ YYDEBUG(193, *YYCURSOR);
YYCURSOR = YYMARKER;
if (yyaccept <= 1) {
- if (yyaccept == 0) {
- goto yy169;
+ if (yyaccept <= 0) {
+ goto yy168;
} else {
- goto yy172;
+ goto yy171;
}
} else {
- if (yyaccept == 2) {
- goto yy180;
+ if (yyaccept <= 2) {
+ goto yy179;
} else {
- goto yy182;
+ goto yy181;
}
}
-yy195:
- YYDEBUG(195, *YYCURSOR);
+yy194:
+ YYDEBUG(194, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 8) {
- goto yy196;
+ goto yy195;
}
- if (yych == '\\') goto yy198;
- goto yy190;
-yy196:
- YYDEBUG(196, *YYCURSOR);
+ if (yych == '\\') goto yy197;
+ goto yy189;
+yy195:
+ YYDEBUG(195, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(197, *YYCURSOR);
+ YYDEBUG(196, *YYCURSOR);
if (yybm[0+yych] & 8) {
- goto yy196;
+ goto yy195;
}
- if (yych == '\\') goto yy200;
- goto yy190;
-yy198:
- YYDEBUG(198, *YYCURSOR);
+ if (yych == '\\') goto yy199;
+ goto yy189;
+yy197:
+ YYDEBUG(197, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(199, *YYCURSOR);
+ YYDEBUG(198, *YYCURSOR);
if (yybm[0+yych] & 8) {
- goto yy196;
+ goto yy195;
}
- if (yych == '\\') goto yy198;
- goto yy190;
-yy200:
- YYDEBUG(200, *YYCURSOR);
+ if (yych == '\\') goto yy197;
+ goto yy189;
+yy199:
+ YYDEBUG(199, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 8) {
- goto yy196;
+ goto yy195;
}
- if (yych == '\\') goto yy198;
- goto yy190;
-yy201:
- YYDEBUG(201, *YYCURSOR);
+ if (yych == '\\') goto yy197;
+ goto yy189;
+yy200:
+ YYDEBUG(200, *YYCURSOR);
yyaccept = 3;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(202, *YYCURSOR);
+ YYDEBUG(201, *YYCURSOR);
if (yybm[0+yych] & 32) {
- goto yy201;
+ goto yy200;
}
if (yych <= '$') {
if (yych <= '\r') {
- if (yych == '\n') goto yy182;
- if (yych <= '\f') goto yy190;
- goto yy182;
+ if (yych == '\n') goto yy181;
+ if (yych <= '\f') goto yy189;
+ goto yy181;
} else {
- if (yych == '"') goto yy182;
- if (yych <= '#') goto yy190;
- goto yy193;
+ if (yych == '"') goto yy181;
+ if (yych <= '#') goto yy189;
+ goto yy192;
}
} else {
if (yych <= ';') {
- if (yych == '\'') goto yy182;
- if (yych <= ':') goto yy190;
- goto yy182;
+ if (yych == '\'') goto yy181;
+ if (yych <= ':') goto yy189;
+ goto yy181;
} else {
- if (yych <= '[') goto yy190;
- if (yych <= '\\') goto yy192;
- if (yych <= ']') goto yy182;
- goto yy190;
+ if (yych <= '[') goto yy189;
+ if (yych <= '\\') goto yy191;
+ if (yych <= ']') goto yy181;
+ goto yy189;
}
}
-yy203:
- YYDEBUG(203, *YYCURSOR);
+yy202:
+ YYDEBUG(202, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(204, *YYCURSOR);
+ YYDEBUG(203, *YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy203;
+ goto yy202;
}
if (yych <= '$') {
if (yych <= '\r') {
- if (yych == '\n') goto yy180;
- if (yych <= '\f') goto yy190;
- goto yy180;
+ if (yych == '\n') goto yy179;
+ if (yych <= '\f') goto yy189;
+ goto yy179;
} else {
- if (yych == '"') goto yy180;
- if (yych <= '#') goto yy190;
- goto yy193;
+ if (yych == '"') goto yy179;
+ if (yych <= '#') goto yy189;
+ goto yy192;
}
} else {
if (yych <= ';') {
- if (yych == '\'') goto yy180;
- if (yych <= ':') goto yy190;
- goto yy180;
+ if (yych == '\'') goto yy179;
+ if (yych <= ':') goto yy189;
+ goto yy179;
} else {
- if (yych <= '[') goto yy190;
- if (yych <= '\\') goto yy192;
- if (yych <= ']') goto yy180;
- goto yy190;
+ if (yych <= '[') goto yy189;
+ if (yych <= '\\') goto yy191;
+ if (yych <= ']') goto yy179;
+ goto yy189;
}
}
-yy205:
- YYDEBUG(205, *YYCURSOR);
+yy204:
+ YYDEBUG(204, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(206, *YYCURSOR);
+ YYDEBUG(205, *YYCURSOR);
if (yych <= '\'') {
if (yych <= '!') {
if (yych <= '\n') {
- if (yych <= '\t') goto yy190;
- goto yy180;
+ if (yych <= '\t') goto yy189;
+ goto yy179;
} else {
- if (yych == '\r') goto yy180;
- goto yy190;
+ if (yych == '\r') goto yy179;
+ goto yy189;
}
} else {
if (yych <= '#') {
- if (yych <= '"') goto yy180;
- goto yy190;
+ if (yych <= '"') goto yy179;
+ goto yy189;
} else {
- if (yych <= '$') goto yy193;
- if (yych <= '&') goto yy190;
- goto yy180;
+ if (yych <= '$') goto yy192;
+ if (yych <= '&') goto yy189;
+ goto yy179;
}
}
} else {
if (yych <= ':') {
if (yych <= '.') {
- if (yych <= '-') goto yy190;
- goto yy203;
+ if (yych <= '-') goto yy189;
+ goto yy202;
} else {
- if (yych <= '/') goto yy190;
- if (yych <= '9') goto yy205;
- goto yy190;
+ if (yych <= '/') goto yy189;
+ if (yych <= '9') goto yy204;
+ goto yy189;
}
} else {
if (yych <= '[') {
- if (yych <= ';') goto yy180;
- goto yy190;
+ if (yych <= ';') goto yy179;
+ goto yy189;
} else {
- if (yych <= '\\') goto yy192;
- if (yych <= ']') goto yy180;
- goto yy190;
+ if (yych <= '\\') goto yy191;
+ if (yych <= ']') goto yy179;
+ goto yy189;
}
}
}
-yy207:
- YYDEBUG(207, *YYCURSOR);
+yy206:
+ YYDEBUG(206, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(208, *YYCURSOR);
+ YYDEBUG(207, *YYCURSOR);
if (yych <= '&') {
if (yych <= '\r') {
- if (yych == '\n') goto yy180;
- if (yych <= '\f') goto yy190;
- goto yy180;
+ if (yych == '\n') goto yy179;
+ if (yych <= '\f') goto yy189;
+ goto yy179;
} else {
if (yych <= '"') {
- if (yych <= '!') goto yy190;
- goto yy180;
+ if (yych <= '!') goto yy189;
+ goto yy179;
} else {
- if (yych == '$') goto yy193;
- goto yy190;
+ if (yych == '$') goto yy192;
+ goto yy189;
}
}
} else {
if (yych <= ':') {
- if (yych <= '\'') goto yy180;
- if (yych <= '/') goto yy190;
- if (yych <= '9') goto yy207;
- goto yy190;
+ if (yych <= '\'') goto yy179;
+ if (yych <= '/') goto yy189;
+ if (yych <= '9') goto yy206;
+ goto yy189;
} else {
if (yych <= '[') {
- if (yych <= ';') goto yy180;
- goto yy190;
+ if (yych <= ';') goto yy179;
+ goto yy189;
} else {
- if (yych <= '\\') goto yy192;
- if (yych <= ']') goto yy180;
- goto yy190;
+ if (yych <= '\\') goto yy191;
+ if (yych <= ']') goto yy179;
+ goto yy189;
}
}
}
-yy209:
- YYDEBUG(209, *YYCURSOR);
+yy208:
+ YYDEBUG(208, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(210, *YYCURSOR);
+ YYDEBUG(209, *YYCURSOR);
if (yych <= '&') {
if (yych <= '\r') {
- if (yych == '\n') goto yy180;
- if (yych <= '\f') goto yy190;
- goto yy180;
+ if (yych == '\n') goto yy179;
+ if (yych <= '\f') goto yy189;
+ goto yy179;
} else {
if (yych <= '"') {
- if (yych <= '!') goto yy190;
- goto yy180;
+ if (yych <= '!') goto yy189;
+ goto yy179;
} else {
- if (yych == '$') goto yy193;
- goto yy190;
+ if (yych == '$') goto yy192;
+ goto yy189;
}
}
} else {
if (yych <= ':') {
- if (yych <= '\'') goto yy180;
- if (yych <= '/') goto yy190;
- if (yych <= '9') goto yy209;
- goto yy190;
+ if (yych <= '\'') goto yy179;
+ if (yych <= '/') goto yy189;
+ if (yych <= '9') goto yy208;
+ goto yy189;
} else {
if (yych <= '[') {
- if (yych <= ';') goto yy180;
- goto yy190;
+ if (yych <= ';') goto yy179;
+ goto yy189;
} else {
- if (yych <= '\\') goto yy192;
- if (yych <= ']') goto yy180;
- goto yy190;
+ if (yych <= '\\') goto yy191;
+ if (yych <= ']') goto yy179;
+ goto yy189;
}
}
}
-yy211:
- YYDEBUG(211, *YYCURSOR);
+yy210:
+ YYDEBUG(210, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(212, *YYCURSOR);
+ YYDEBUG(211, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy211;
+ goto yy210;
}
- YYDEBUG(213, *YYCURSOR);
+ YYDEBUG(212, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(214, *YYCURSOR);
+ YYDEBUG(213, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 418 "Zend/zend_ini_scanner.l"
{ /* Raw string */
@@ -2742,65 +2733,65 @@ yy211:
}
RETURN_TOKEN(TC_RAW, yytext, yyleng);
}
-#line 2746 "Zend/zend_ini_scanner.c"
-yy215:
- YYDEBUG(215, *YYCURSOR);
+#line 2737 "Zend/zend_ini_scanner.c"
+yy214:
+ YYDEBUG(214, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(216, *YYCURSOR);
+ YYDEBUG(215, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 451 "Zend/zend_ini_scanner.l"
{ /* Variable start */
yy_push_state(ST_VARNAME);
return TC_DOLLAR_CURLY;
}
-#line 2757 "Zend/zend_ini_scanner.c"
-yy217:
- YYDEBUG(217, *YYCURSOR);
+#line 2748 "Zend/zend_ini_scanner.c"
+yy216:
+ YYDEBUG(216, *YYCURSOR);
yyaccept = 0;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(218, *YYCURSOR);
+ YYDEBUG(217, *YYCURSOR);
if (yych <= '"') {
if (yych <= '\f') {
- if (yych <= 0x08) goto yy190;
- if (yych <= '\t') goto yy217;
- if (yych <= '\n') goto yy169;
- goto yy190;
+ if (yych <= 0x08) goto yy189;
+ if (yych <= '\t') goto yy216;
+ if (yych <= '\n') goto yy168;
+ goto yy189;
} else {
if (yych <= 0x1F) {
- if (yych <= '\r') goto yy169;
- goto yy190;
+ if (yych <= '\r') goto yy168;
+ goto yy189;
} else {
- if (yych <= ' ') goto yy217;
- if (yych <= '!') goto yy190;
+ if (yych <= ' ') goto yy216;
+ if (yych <= '!') goto yy189;
}
}
} else {
if (yych <= ':') {
if (yych <= '$') {
- if (yych <= '#') goto yy190;
- goto yy193;
+ if (yych <= '#') goto yy189;
+ goto yy192;
} else {
- if (yych == '\'') goto yy169;
- goto yy190;
+ if (yych == '\'') goto yy168;
+ goto yy189;
}
} else {
if (yych <= '[') {
- if (yych <= ';') goto yy169;
- goto yy190;
+ if (yych <= ';') goto yy168;
+ goto yy189;
} else {
- if (yych <= '\\') goto yy192;
- if (yych <= ']') goto yy169;
- goto yy190;
+ if (yych <= '\\') goto yy191;
+ if (yych <= ']') goto yy168;
+ goto yy189;
}
}
}
-yy219:
- YYDEBUG(219, *YYCURSOR);
+yy218:
+ YYDEBUG(218, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy174;
+ goto yy173;
}
/* *********************************** */
yyc_ST_VALUE:
@@ -2839,28 +2830,28 @@ yyc_ST_VALUE:
162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162,
};
- YYDEBUG(220, *YYCURSOR);
+ YYDEBUG(219, *YYCURSOR);
YYFILL(6);
yych = *YYCURSOR;
YYDEBUG(-1, yych);
switch (yych) {
- case 0x00: goto yy222;
+ case 0x00: goto yy221;
case '\t':
- case ' ': goto yy226;
- case '\n': goto yy228;
- case '\r': goto yy230;
+ case ' ': goto yy225;
+ case '\n': goto yy227;
+ case '\r': goto yy229;
case '!':
case '&':
case '(':
case ')':
case '^':
case '|':
- case '~': goto yy231;
- case '"': goto yy233;
- case '$': goto yy235;
- case '\'': goto yy236;
- case '-': goto yy237;
- case '.': goto yy238;
+ case '~': goto yy230;
+ case '"': goto yy232;
+ case '$': goto yy234;
+ case '\'': goto yy235;
+ case '-': goto yy236;
+ case '.': goto yy237;
case '0':
case '1':
case '2':
@@ -2870,9 +2861,9 @@ yyc_ST_VALUE:
case '6':
case '7':
case '8':
- case '9': goto yy239;
- case ';': goto yy241;
- case '=': goto yy242;
+ case '9': goto yy238;
+ case ';': goto yy240;
+ case '=': goto yy241;
case 'A':
case 'B':
case 'C':
@@ -2915,62 +2906,62 @@ yyc_ST_VALUE:
case 'v':
case 'w':
case 'x':
- case 'z': goto yy244;
+ case 'z': goto yy243;
case 'F':
- case 'f': goto yy246;
+ case 'f': goto yy245;
case 'N':
- case 'n': goto yy247;
+ case 'n': goto yy246;
case 'O':
- case 'o': goto yy248;
+ case 'o': goto yy247;
case 'T':
- case 't': goto yy249;
+ case 't': goto yy248;
case 'Y':
- case 'y': goto yy250;
- default: goto yy224;
+ case 'y': goto yy249;
+ default: goto yy223;
}
+yy221:
+ YYDEBUG(221, *YYCURSOR);
+ ++YYCURSOR;
yy222:
YYDEBUG(222, *YYCURSOR);
- ++YYCURSOR;
-yy223:
- YYDEBUG(223, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 645 "Zend/zend_ini_scanner.l"
{ /* End of option value (if EOF is reached before EOL */
BEGIN(INITIAL);
return END_OF_LINE;
}
-#line 2943 "Zend/zend_ini_scanner.c"
-yy224:
- YYDEBUG(224, *YYCURSOR);
+#line 2934 "Zend/zend_ini_scanner.c"
+yy223:
+ YYDEBUG(223, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- goto yy252;
-yy225:
- YYDEBUG(225, *YYCURSOR);
+ goto yy251;
+yy224:
+ YYDEBUG(224, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 571 "Zend/zend_ini_scanner.l"
{ /* Get everything else as option/offset value */
RETURN_TOKEN(TC_STRING, yytext, yyleng);
}
-#line 2956 "Zend/zend_ini_scanner.c"
-yy226:
- YYDEBUG(226, *YYCURSOR);
+#line 2947 "Zend/zend_ini_scanner.c"
+yy225:
+ YYDEBUG(225, *YYCURSOR);
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
- goto yy306;
-yy227:
- YYDEBUG(227, *YYCURSOR);
+ goto yy305;
+yy226:
+ YYDEBUG(226, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 625 "Zend/zend_ini_scanner.l"
{
RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng);
}
-#line 2969 "Zend/zend_ini_scanner.c"
+#line 2960 "Zend/zend_ini_scanner.c"
+yy227:
+ YYDEBUG(227, *YYCURSOR);
+ ++YYCURSOR;
yy228:
YYDEBUG(228, *YYCURSOR);
- ++YYCURSOR;
-yy229:
- YYDEBUG(229, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 543 "Zend/zend_ini_scanner.l"
{ /* End of option value */
@@ -2978,125 +2969,125 @@ yy229:
SCNG(lineno)++;
return END_OF_LINE;
}
-#line 2982 "Zend/zend_ini_scanner.c"
+#line 2973 "Zend/zend_ini_scanner.c"
+yy229:
+ YYDEBUG(229, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy303;
+ goto yy228;
yy230:
YYDEBUG(230, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy304;
- goto yy229;
-yy231:
- YYDEBUG(231, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy303;
-yy232:
- YYDEBUG(232, *YYCURSOR);
+ goto yy302;
+yy231:
+ YYDEBUG(231, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 561 "Zend/zend_ini_scanner.l"
{ /* Boolean operators */
return yytext[0];
}
-#line 3000 "Zend/zend_ini_scanner.c"
+#line 2991 "Zend/zend_ini_scanner.c"
+yy232:
+ YYDEBUG(232, *YYCURSOR);
+ ++YYCURSOR;
yy233:
YYDEBUG(233, *YYCURSOR);
- ++YYCURSOR;
-yy234:
- YYDEBUG(234, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 579 "Zend/zend_ini_scanner.l"
{ /* Double quoted '"' string start */
yy_push_state(ST_DOUBLE_QUOTES);
return '"';
}
-#line 3012 "Zend/zend_ini_scanner.c"
-yy235:
- YYDEBUG(235, *YYCURSOR);
+#line 3003 "Zend/zend_ini_scanner.c"
+yy234:
+ YYDEBUG(234, *YYCURSOR);
yych = *++YYCURSOR;
if (yych <= '\\') {
- if (yych <= 0x00) goto yy223;
- if (yych <= '[') goto yy251;
- goto yy258;
+ if (yych <= 0x00) goto yy222;
+ if (yych <= '[') goto yy250;
+ goto yy257;
} else {
- if (yych == '{') goto yy300;
- goto yy251;
+ if (yych == '{') goto yy299;
+ goto yy250;
}
-yy236:
- YYDEBUG(236, *YYCURSOR);
+yy235:
+ YYDEBUG(235, *YYCURSOR);
yyaccept = 2;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy296;
+ goto yy295;
}
- goto yy223;
+ goto yy222;
+yy236:
+ YYDEBUG(236, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '/') goto yy251;
+ if (yych <= '9') goto yy293;
+ goto yy251;
yy237:
YYDEBUG(237, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy252;
- if (yych <= '9') goto yy294;
- goto yy252;
+ if (yych <= '/') goto yy251;
+ if (yych <= '9') goto yy291;
+ goto yy251;
yy238:
YYDEBUG(238, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy252;
- if (yych <= '9') goto yy292;
- goto yy252;
-yy239:
- YYDEBUG(239, *YYCURSOR);
yyaccept = 3;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '/') {
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy240;
- if (yych <= 0x08) goto yy252;
+ if (yych <= 0x00) goto yy239;
+ if (yych <= 0x08) goto yy251;
} else {
- if (yych != '\r') goto yy252;
+ if (yych != '\r') goto yy251;
}
} else {
if (yych <= ')') {
- if (yych <= '"') goto yy240;
- if (yych <= '%') goto yy252;
+ if (yych <= '"') goto yy239;
+ if (yych <= '%') goto yy251;
} else {
- if (yych == '.') goto yy288;
- goto yy252;
+ if (yych == '.') goto yy287;
+ goto yy251;
}
}
} else {
if (yych <= ']') {
if (yych <= ';') {
- if (yych <= '9') goto yy290;
- if (yych <= ':') goto yy252;
+ if (yych <= '9') goto yy289;
+ if (yych <= ':') goto yy251;
} else {
- if (yych != '=') goto yy252;
+ if (yych != '=') goto yy251;
}
} else {
if (yych <= '|') {
- if (yych <= '^') goto yy240;
- if (yych <= '{') goto yy252;
+ if (yych <= '^') goto yy239;
+ if (yych <= '{') goto yy251;
} else {
- if (yych != '~') goto yy252;
+ if (yych != '~') goto yy251;
}
}
}
-yy240:
- YYDEBUG(240, *YYCURSOR);
+yy239:
+ YYDEBUG(239, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 553 "Zend/zend_ini_scanner.l"
{ /* Get number option value as string */
RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
}
-#line 3091 "Zend/zend_ini_scanner.c"
-yy241:
- YYDEBUG(241, *YYCURSOR);
+#line 3082 "Zend/zend_ini_scanner.c"
+yy240:
+ YYDEBUG(240, *YYCURSOR);
yyaccept = 2;
yych = *(YYMARKER = ++YYCURSOR);
- goto yy284;
-yy242:
- YYDEBUG(242, *YYCURSOR);
+ goto yy283;
+yy241:
+ YYDEBUG(241, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(243, *YYCURSOR);
+ YYDEBUG(242, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 565 "Zend/zend_ini_scanner.l"
{ /* Make = used in option value to trigger error */
@@ -3104,1223 +3095,1222 @@ yy242:
BEGIN(INITIAL);
return END_OF_LINE;
}
-#line 3108 "Zend/zend_ini_scanner.c"
-yy244:
- YYDEBUG(244, *YYCURSOR);
+#line 3099 "Zend/zend_ini_scanner.c"
+yy243:
+ YYDEBUG(243, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 4) {
- goto yy253;
+ goto yy252;
}
if (yych <= ':') {
if (yych <= '\r') {
if (yych <= 0x08) {
- if (yych >= 0x01) goto yy252;
+ if (yych >= 0x01) goto yy251;
} else {
- if (yych <= '\n') goto yy245;
- if (yych <= '\f') goto yy252;
+ if (yych <= '\n') goto yy244;
+ if (yych <= '\f') goto yy251;
}
} else {
if (yych <= '"') {
- if (yych <= 0x1F) goto yy252;
+ if (yych <= 0x1F) goto yy251;
} else {
- if (yych <= '%') goto yy252;
- if (yych >= '*') goto yy252;
+ if (yych <= '%') goto yy251;
+ if (yych >= '*') goto yy251;
}
}
} else {
if (yych <= '^') {
if (yych <= '<') {
- if (yych >= '<') goto yy252;
+ if (yych >= '<') goto yy251;
} else {
- if (yych <= '=') goto yy245;
- if (yych <= ']') goto yy252;
+ if (yych <= '=') goto yy244;
+ if (yych <= ']') goto yy251;
}
} else {
if (yych <= '|') {
- if (yych <= '{') goto yy252;
+ if (yych <= '{') goto yy251;
} else {
- if (yych != '~') goto yy252;
+ if (yych != '~') goto yy251;
}
}
}
-yy245:
- YYDEBUG(245, *YYCURSOR);
+yy244:
+ YYDEBUG(244, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 549 "Zend/zend_ini_scanner.l"
{ /* Get constant option value */
RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
}
-#line 3155 "Zend/zend_ini_scanner.c"
-yy246:
- YYDEBUG(246, *YYCURSOR);
+#line 3146 "Zend/zend_ini_scanner.c"
+yy245:
+ YYDEBUG(245, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '<') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- goto yy245;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ goto yy244;
} else {
- if (yych == '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- goto yy245;
+ if (yych == '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ goto yy244;
}
} else {
if (yych <= '/') {
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy245;
- goto yy252;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy244;
+ goto yy251;
} else {
- if (yych <= '9') goto yy253;
- if (yych == ';') goto yy245;
- goto yy252;
+ if (yych <= '9') goto yy252;
+ if (yych == ';') goto yy244;
+ goto yy251;
}
}
} else {
if (yych <= '_') {
if (yych <= 'A') {
- if (yych <= '=') goto yy245;
- if (yych <= '@') goto yy252;
- goto yy280;
+ if (yych <= '=') goto yy244;
+ if (yych <= '@') goto yy251;
+ goto yy279;
} else {
- if (yych <= 'Z') goto yy253;
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy245;
- goto yy253;
+ if (yych <= 'Z') goto yy252;
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy244;
+ goto yy252;
}
} else {
if (yych <= '{') {
- if (yych <= '`') goto yy252;
- if (yych <= 'a') goto yy280;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych <= '`') goto yy251;
+ if (yych <= 'a') goto yy279;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych <= '~') goto yy245;
- goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych <= '~') goto yy244;
+ goto yy251;
}
}
}
-yy247:
- YYDEBUG(247, *YYCURSOR);
+yy246:
+ YYDEBUG(246, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'N') {
if (yych <= '%') {
if (yych <= '\f') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- if (yych <= '\n') goto yy245;
- goto yy252;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ if (yych <= '\n') goto yy244;
+ goto yy251;
} else {
- if (yych <= '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- if (yych <= '"') goto yy245;
- goto yy252;
+ if (yych <= '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ if (yych <= '"') goto yy244;
+ goto yy251;
}
} else {
if (yych <= ':') {
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- if (yych <= '9') goto yy253;
- goto yy252;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ if (yych <= '9') goto yy252;
+ goto yy251;
} else {
if (yych <= '<') {
- if (yych <= ';') goto yy245;
- goto yy252;
+ if (yych <= ';') goto yy244;
+ goto yy251;
} else {
- if (yych <= '=') goto yy245;
- if (yych <= '@') goto yy252;
- goto yy253;
+ if (yych <= '=') goto yy244;
+ if (yych <= '@') goto yy251;
+ goto yy252;
}
}
}
} else {
if (yych <= 'n') {
if (yych <= 'Z') {
- if (yych <= 'O') goto yy272;
- if (yych == 'U') goto yy273;
- goto yy253;
+ if (yych <= 'O') goto yy271;
+ if (yych == 'U') goto yy272;
+ goto yy252;
} else {
if (yych <= '^') {
- if (yych <= ']') goto yy252;
- goto yy245;
+ if (yych <= ']') goto yy251;
+ goto yy244;
} else {
- if (yych == '`') goto yy252;
- goto yy253;
+ if (yych == '`') goto yy251;
+ goto yy252;
}
}
} else {
if (yych <= 'z') {
- if (yych <= 'o') goto yy272;
- if (yych == 'u') goto yy273;
- goto yy253;
+ if (yych <= 'o') goto yy271;
+ if (yych == 'u') goto yy272;
+ goto yy252;
} else {
if (yych <= '|') {
- if (yych <= '{') goto yy252;
- goto yy245;
+ if (yych <= '{') goto yy251;
+ goto yy244;
} else {
- if (yych == '~') goto yy245;
- goto yy252;
+ if (yych == '~') goto yy244;
+ goto yy251;
}
}
}
}
-yy248:
- YYDEBUG(248, *YYCURSOR);
+yy247:
+ YYDEBUG(247, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'E') {
if (yych <= '%') {
if (yych <= '\f') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- if (yych <= '\n') goto yy245;
- goto yy252;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ if (yych <= '\n') goto yy244;
+ goto yy251;
} else {
- if (yych <= '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- if (yych <= '"') goto yy245;
- goto yy252;
+ if (yych <= '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ if (yych <= '"') goto yy244;
+ goto yy251;
}
} else {
if (yych <= ':') {
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- if (yych <= '9') goto yy253;
- goto yy252;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ if (yych <= '9') goto yy252;
+ goto yy251;
} else {
if (yych <= '<') {
- if (yych <= ';') goto yy245;
- goto yy252;
+ if (yych <= ';') goto yy244;
+ goto yy251;
} else {
- if (yych <= '=') goto yy245;
- if (yych <= '@') goto yy252;
- goto yy253;
+ if (yych <= '=') goto yy244;
+ if (yych <= '@') goto yy251;
+ goto yy252;
}
}
}
} else {
if (yych <= 'e') {
if (yych <= 'Z') {
- if (yych <= 'F') goto yy267;
- if (yych == 'N') goto yy261;
- goto yy253;
+ if (yych <= 'F') goto yy266;
+ if (yych == 'N') goto yy260;
+ goto yy252;
} else {
if (yych <= '^') {
- if (yych <= ']') goto yy252;
- goto yy245;
+ if (yych <= ']') goto yy251;
+ goto yy244;
} else {
- if (yych == '`') goto yy252;
- goto yy253;
+ if (yych == '`') goto yy251;
+ goto yy252;
}
}
} else {
if (yych <= 'z') {
- if (yych <= 'f') goto yy267;
- if (yych == 'n') goto yy261;
- goto yy253;
+ if (yych <= 'f') goto yy266;
+ if (yych == 'n') goto yy260;
+ goto yy252;
} else {
if (yych <= '|') {
- if (yych <= '{') goto yy252;
- goto yy245;
+ if (yych <= '{') goto yy251;
+ goto yy244;
} else {
- if (yych == '~') goto yy245;
- goto yy252;
+ if (yych == '~') goto yy244;
+ goto yy251;
}
}
}
}
-yy249:
- YYDEBUG(249, *YYCURSOR);
+yy248:
+ YYDEBUG(248, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- goto yy245;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ goto yy244;
} else {
- if (yych == '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- goto yy245;
+ if (yych == '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ goto yy244;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- goto yy253;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ goto yy252;
} else {
- if (yych == ';') goto yy245;
- if (yych <= '<') goto yy252;
- goto yy245;
+ if (yych == ';') goto yy244;
+ if (yych <= '<') goto yy251;
+ goto yy244;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= '@') goto yy252;
- if (yych == 'R') goto yy265;
- goto yy253;
- } else {
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy245;
- if (yych <= '_') goto yy253;
+ if (yych <= '@') goto yy251;
+ if (yych == 'R') goto yy264;
goto yy252;
+ } else {
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy244;
+ if (yych <= '_') goto yy252;
+ goto yy251;
}
} else {
if (yych <= '{') {
- if (yych == 'r') goto yy265;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych == 'r') goto yy264;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych <= '~') goto yy245;
- goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych <= '~') goto yy244;
+ goto yy251;
}
}
}
-yy250:
- YYDEBUG(250, *YYCURSOR);
+yy249:
+ YYDEBUG(249, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- goto yy245;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ goto yy244;
} else {
- if (yych == '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- goto yy245;
+ if (yych == '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ goto yy244;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- goto yy253;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ goto yy252;
} else {
- if (yych == ';') goto yy245;
- if (yych <= '<') goto yy252;
- goto yy245;
+ if (yych == ';') goto yy244;
+ if (yych <= '<') goto yy251;
+ goto yy244;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= '@') goto yy252;
- if (yych == 'E') goto yy255;
- goto yy253;
- } else {
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy245;
- if (yych <= '_') goto yy253;
+ if (yych <= '@') goto yy251;
+ if (yych == 'E') goto yy254;
goto yy252;
+ } else {
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy244;
+ if (yych <= '_') goto yy252;
+ goto yy251;
}
} else {
if (yych <= '{') {
- if (yych == 'e') goto yy255;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych == 'e') goto yy254;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych <= '~') goto yy245;
- goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych <= '~') goto yy244;
+ goto yy251;
}
}
}
-yy251:
- YYDEBUG(251, *YYCURSOR);
+yy250:
+ YYDEBUG(250, *YYCURSOR);
yyaccept = 0;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy252:
- YYDEBUG(252, *YYCURSOR);
+yy251:
+ YYDEBUG(251, *YYCURSOR);
if (yybm[0+yych] & 2) {
- goto yy251;
+ goto yy250;
}
- if (yych <= '"') goto yy225;
- if (yych <= '$') goto yy256;
- goto yy225;
-yy253:
- YYDEBUG(253, *YYCURSOR);
+ if (yych == '$') goto yy255;
+ goto yy224;
+yy252:
+ YYDEBUG(252, *YYCURSOR);
yyaccept = 4;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(254, *YYCURSOR);
+ YYDEBUG(253, *YYCURSOR);
if (yybm[0+yych] & 4) {
- goto yy253;
+ goto yy252;
}
if (yych <= ')') {
if (yych <= '\r') {
if (yych <= 0x08) {
- if (yych <= 0x00) goto yy245;
- goto yy251;
+ if (yych <= 0x00) goto yy244;
+ goto yy250;
} else {
- if (yych <= '\n') goto yy245;
- if (yych <= '\f') goto yy251;
- goto yy245;
+ if (yych <= '\n') goto yy244;
+ if (yych <= '\f') goto yy250;
+ goto yy244;
}
} else {
if (yych <= '#') {
- if (yych <= 0x1F) goto yy251;
- if (yych <= '"') goto yy245;
- goto yy251;
+ if (yych <= 0x1F) goto yy250;
+ if (yych <= '"') goto yy244;
+ goto yy250;
} else {
- if (yych <= '$') goto yy256;
- if (yych <= '%') goto yy251;
- goto yy245;
+ if (yych <= '$') goto yy255;
+ if (yych <= '%') goto yy250;
+ goto yy244;
}
}
} else {
if (yych <= ']') {
if (yych <= ';') {
- if (yych <= ':') goto yy251;
- goto yy245;
+ if (yych <= ':') goto yy250;
+ goto yy244;
} else {
- if (yych == '=') goto yy245;
- goto yy251;
+ if (yych == '=') goto yy244;
+ goto yy250;
}
} else {
if (yych <= '|') {
- if (yych <= '^') goto yy245;
- if (yych <= '{') goto yy251;
- goto yy245;
+ if (yych <= '^') goto yy244;
+ if (yych <= '{') goto yy250;
+ goto yy244;
} else {
- if (yych == '~') goto yy245;
- goto yy251;
+ if (yych == '~') goto yy244;
+ goto yy250;
}
}
}
-yy255:
- YYDEBUG(255, *YYCURSOR);
+yy254:
+ YYDEBUG(254, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- goto yy245;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ goto yy244;
} else {
- if (yych == '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- goto yy245;
+ if (yych == '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ goto yy244;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- goto yy253;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ goto yy252;
} else {
- if (yych == ';') goto yy245;
- if (yych <= '<') goto yy252;
- goto yy245;
+ if (yych == ';') goto yy244;
+ if (yych <= '<') goto yy251;
+ goto yy244;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= '@') goto yy252;
- if (yych == 'S') goto yy261;
- goto yy253;
- } else {
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy245;
- if (yych <= '_') goto yy253;
+ if (yych <= '@') goto yy251;
+ if (yych == 'S') goto yy260;
goto yy252;
+ } else {
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy244;
+ if (yych <= '_') goto yy252;
+ goto yy251;
}
} else {
if (yych <= '{') {
- if (yych == 's') goto yy261;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych == 's') goto yy260;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych <= '~') goto yy245;
- goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych <= '~') goto yy244;
+ goto yy251;
}
}
}
-yy256:
- YYDEBUG(256, *YYCURSOR);
+yy255:
+ YYDEBUG(255, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\\') {
- if (yych <= 0x00) goto yy257;
- if (yych <= '[') goto yy251;
- goto yy258;
+ if (yych <= 0x00) goto yy256;
+ if (yych <= '[') goto yy250;
+ goto yy257;
} else {
- if (yych != '{') goto yy251;
+ if (yych != '{') goto yy250;
}
-yy257:
- YYDEBUG(257, *YYCURSOR);
+yy256:
+ YYDEBUG(256, *YYCURSOR);
YYCURSOR = YYMARKER;
if (yyaccept <= 3) {
if (yyaccept <= 1) {
- if (yyaccept == 0) {
- goto yy225;
+ if (yyaccept <= 0) {
+ goto yy224;
} else {
- goto yy227;
+ goto yy226;
}
} else {
- if (yyaccept == 2) {
- goto yy223;
+ if (yyaccept <= 2) {
+ goto yy222;
} else {
- goto yy240;
+ goto yy239;
}
}
} else {
if (yyaccept <= 5) {
- if (yyaccept == 4) {
- goto yy245;
+ if (yyaccept <= 4) {
+ goto yy244;
} else {
- goto yy262;
+ goto yy261;
}
} else {
- if (yyaccept == 6) {
- goto yy269;
+ if (yyaccept <= 6) {
+ goto yy268;
} else {
- goto yy276;
+ goto yy275;
}
}
}
-yy258:
- YYDEBUG(258, *YYCURSOR);
+yy257:
+ YYDEBUG(257, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 8) {
- goto yy259;
+ goto yy258;
}
- goto yy251;
-yy259:
- YYDEBUG(259, *YYCURSOR);
+ goto yy250;
+yy258:
+ YYDEBUG(258, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(260, *YYCURSOR);
+ YYDEBUG(259, *YYCURSOR);
if (yybm[0+yych] & 8) {
- goto yy259;
+ goto yy258;
}
- if (yych <= 0x00) goto yy225;
- if (yych == '\\') goto yy258;
- goto yy251;
-yy261:
- YYDEBUG(261, *YYCURSOR);
+ if (yych <= 0x00) goto yy224;
+ if (yych == '\\') goto yy257;
+ goto yy250;
+yy260:
+ YYDEBUG(260, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 16) {
- goto yy263;
+ goto yy262;
}
if (yych <= ';') {
- if (yych <= 0x1F) {
+ if (yych <= ' ') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy262;
- if (yych <= 0x08) goto yy252;
+ if (yych <= 0x00) goto yy261;
+ if (yych <= '\t') goto yy251;
} else {
- if (yych != '\r') goto yy252;
+ if (yych != '\r') goto yy251;
}
} else {
if (yych <= ')') {
- if (yych <= '"') goto yy262;
- if (yych <= '%') goto yy252;
+ if (yych <= '"') goto yy261;
+ if (yych <= '%') goto yy251;
} else {
- if (yych <= '/') goto yy252;
- if (yych <= '9') goto yy253;
- if (yych <= ':') goto yy252;
+ if (yych <= '/') goto yy251;
+ if (yych <= '9') goto yy252;
+ if (yych <= ':') goto yy251;
}
}
} else {
if (yych <= '_') {
if (yych <= '@') {
- if (yych != '=') goto yy252;
+ if (yych != '=') goto yy251;
} else {
- if (yych <= 'Z') goto yy253;
- if (yych <= ']') goto yy252;
- if (yych >= '_') goto yy253;
+ if (yych <= 'Z') goto yy252;
+ if (yych <= ']') goto yy251;
+ if (yych >= '_') goto yy252;
}
} else {
if (yych <= '{') {
- if (yych <= '`') goto yy252;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych <= '`') goto yy251;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych >= 0x7F) goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych >= 0x7F) goto yy251;
}
}
}
-yy262:
- YYDEBUG(262, *YYCURSOR);
+yy261:
+ YYDEBUG(261, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 471 "Zend/zend_ini_scanner.l"
{ /* TRUE value (when used outside option value/offset this causes parse error!) */
RETURN_TOKEN(BOOL_TRUE, "1", 1);
}
-#line 3672 "Zend/zend_ini_scanner.c"
-yy263:
- YYDEBUG(263, *YYCURSOR);
+#line 3662 "Zend/zend_ini_scanner.c"
+yy262:
+ YYDEBUG(262, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(264, *YYCURSOR);
+ YYDEBUG(263, *YYCURSOR);
if (yybm[0+yych] & 16) {
- goto yy263;
+ goto yy262;
}
- goto yy262;
-yy265:
- YYDEBUG(265, *YYCURSOR);
+ goto yy261;
+yy264:
+ YYDEBUG(264, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- goto yy245;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ goto yy244;
} else {
- if (yych == '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- goto yy245;
+ if (yych == '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ goto yy244;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- goto yy253;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ goto yy252;
} else {
- if (yych == ';') goto yy245;
- if (yych <= '<') goto yy252;
- goto yy245;
+ if (yych == ';') goto yy244;
+ if (yych <= '<') goto yy251;
+ goto yy244;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= '@') goto yy252;
- if (yych != 'U') goto yy253;
+ if (yych <= '@') goto yy251;
+ if (yych != 'U') goto yy252;
} else {
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy245;
- if (yych <= '_') goto yy253;
- goto yy252;
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy244;
+ if (yych <= '_') goto yy252;
+ goto yy251;
}
} else {
if (yych <= '{') {
- if (yych == 'u') goto yy266;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych == 'u') goto yy265;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych <= '~') goto yy245;
- goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych <= '~') goto yy244;
+ goto yy251;
}
}
}
-yy266:
- YYDEBUG(266, *YYCURSOR);
+yy265:
+ YYDEBUG(265, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- goto yy245;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ goto yy244;
} else {
- if (yych == '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- goto yy245;
+ if (yych == '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ goto yy244;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- goto yy253;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ goto yy252;
} else {
- if (yych == ';') goto yy245;
- if (yych <= '<') goto yy252;
- goto yy245;
+ if (yych == ';') goto yy244;
+ if (yych <= '<') goto yy251;
+ goto yy244;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= '@') goto yy252;
- if (yych == 'E') goto yy261;
- goto yy253;
- } else {
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy245;
- if (yych <= '_') goto yy253;
+ if (yych <= '@') goto yy251;
+ if (yych == 'E') goto yy260;
goto yy252;
+ } else {
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy244;
+ if (yych <= '_') goto yy252;
+ goto yy251;
}
} else {
if (yych <= '{') {
- if (yych == 'e') goto yy261;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych == 'e') goto yy260;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych <= '~') goto yy245;
- goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych <= '~') goto yy244;
+ goto yy251;
}
}
}
-yy267:
- YYDEBUG(267, *YYCURSOR);
+yy266:
+ YYDEBUG(266, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- goto yy245;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ goto yy244;
} else {
- if (yych == '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- goto yy245;
+ if (yych == '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ goto yy244;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- goto yy253;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ goto yy252;
} else {
- if (yych == ';') goto yy245;
- if (yych <= '<') goto yy252;
- goto yy245;
+ if (yych == ';') goto yy244;
+ if (yych <= '<') goto yy251;
+ goto yy244;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= '@') goto yy252;
- if (yych != 'F') goto yy253;
+ if (yych <= '@') goto yy251;
+ if (yych != 'F') goto yy252;
} else {
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy245;
- if (yych <= '_') goto yy253;
- goto yy252;
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy244;
+ if (yych <= '_') goto yy252;
+ goto yy251;
}
} else {
if (yych <= '{') {
- if (yych == 'f') goto yy268;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych == 'f') goto yy267;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych <= '~') goto yy245;
- goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych <= '~') goto yy244;
+ goto yy251;
}
}
}
-yy268:
- YYDEBUG(268, *YYCURSOR);
+yy267:
+ YYDEBUG(267, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 4) {
- goto yy253;
+ goto yy252;
}
if (yych <= ')') {
if (yych <= '\f') {
if (yych <= 0x08) {
- if (yych >= 0x01) goto yy252;
+ if (yych >= 0x01) goto yy251;
} else {
- if (yych <= '\t') goto yy270;
- if (yych >= '\v') goto yy252;
+ if (yych <= '\t') goto yy269;
+ if (yych >= '\v') goto yy251;
}
} else {
if (yych <= ' ') {
- if (yych <= '\r') goto yy269;
- if (yych <= 0x1F) goto yy252;
- goto yy270;
+ if (yych <= '\r') goto yy268;
+ if (yych <= 0x1F) goto yy251;
+ goto yy269;
} else {
- if (yych <= '"') goto yy269;
- if (yych <= '%') goto yy252;
+ if (yych <= '"') goto yy268;
+ if (yych <= '%') goto yy251;
}
}
} else {
if (yych <= ']') {
if (yych <= ';') {
- if (yych <= ':') goto yy252;
+ if (yych <= ':') goto yy251;
} else {
- if (yych != '=') goto yy252;
+ if (yych != '=') goto yy251;
}
} else {
if (yych <= '|') {
- if (yych <= '^') goto yy269;
- if (yych <= '{') goto yy252;
+ if (yych <= '^') goto yy268;
+ if (yych <= '{') goto yy251;
} else {
- if (yych != '~') goto yy252;
+ if (yych != '~') goto yy251;
}
}
}
-yy269:
- YYDEBUG(269, *YYCURSOR);
+yy268:
+ YYDEBUG(268, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 475 "Zend/zend_ini_scanner.l"
{ /* FALSE value (when used outside option value/offset this causes parse error!)*/
RETURN_TOKEN(BOOL_FALSE, "", 0);
}
-#line 3882 "Zend/zend_ini_scanner.c"
-yy270:
- YYDEBUG(270, *YYCURSOR);
+#line 3872 "Zend/zend_ini_scanner.c"
+yy269:
+ YYDEBUG(269, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
+ YYDEBUG(270, *YYCURSOR);
+ if (yych == '\t') goto yy269;
+ if (yych == ' ') goto yy269;
+ goto yy268;
+yy271:
YYDEBUG(271, *YYCURSOR);
- if (yych == '\t') goto yy270;
- if (yych == ' ') goto yy270;
- goto yy269;
-yy272:
- YYDEBUG(272, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '<') {
if (yych <= ' ') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy269;
- if (yych <= 0x08) goto yy252;
- if (yych <= '\t') goto yy270;
- goto yy269;
+ if (yych <= 0x00) goto yy268;
+ if (yych <= 0x08) goto yy251;
+ if (yych <= '\t') goto yy269;
+ goto yy268;
} else {
- if (yych == '\r') goto yy269;
- if (yych <= 0x1F) goto yy252;
- goto yy270;
+ if (yych == '\r') goto yy268;
+ if (yych <= 0x1F) goto yy251;
+ goto yy269;
}
} else {
if (yych <= '/') {
- if (yych <= '"') goto yy269;
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy269;
- goto yy252;
+ if (yych <= '"') goto yy268;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy268;
+ goto yy251;
} else {
- if (yych <= '9') goto yy253;
- if (yych == ';') goto yy269;
- goto yy252;
+ if (yych <= '9') goto yy252;
+ if (yych == ';') goto yy268;
+ goto yy251;
}
}
} else {
if (yych <= '_') {
if (yych <= 'N') {
- if (yych <= '=') goto yy269;
- if (yych <= '@') goto yy252;
- if (yych <= 'M') goto yy253;
- goto yy279;
- } else {
- if (yych <= 'Z') goto yy253;
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy269;
- goto yy253;
+ if (yych <= '=') goto yy268;
+ if (yych <= '@') goto yy251;
+ if (yych <= 'M') goto yy252;
+ goto yy278;
+ } else {
+ if (yych <= 'Z') goto yy252;
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy268;
+ goto yy252;
}
} else {
if (yych <= 'z') {
- if (yych <= '`') goto yy252;
- if (yych == 'n') goto yy279;
- goto yy253;
+ if (yych <= '`') goto yy251;
+ if (yych == 'n') goto yy278;
+ goto yy252;
} else {
if (yych <= '|') {
- if (yych <= '{') goto yy252;
- goto yy269;
+ if (yych <= '{') goto yy251;
+ goto yy268;
} else {
- if (yych == '~') goto yy269;
- goto yy252;
+ if (yych == '~') goto yy268;
+ goto yy251;
}
}
}
}
-yy273:
- YYDEBUG(273, *YYCURSOR);
+yy272:
+ YYDEBUG(272, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- goto yy245;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ goto yy244;
} else {
- if (yych == '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- goto yy245;
+ if (yych == '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ goto yy244;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- goto yy253;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ goto yy252;
} else {
- if (yych == ';') goto yy245;
- if (yych <= '<') goto yy252;
- goto yy245;
+ if (yych == ';') goto yy244;
+ if (yych <= '<') goto yy251;
+ goto yy244;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= '@') goto yy252;
- if (yych != 'L') goto yy253;
+ if (yych <= '@') goto yy251;
+ if (yych != 'L') goto yy252;
} else {
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy245;
- if (yych <= '_') goto yy253;
- goto yy252;
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy244;
+ if (yych <= '_') goto yy252;
+ goto yy251;
}
} else {
if (yych <= '{') {
- if (yych == 'l') goto yy274;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych == 'l') goto yy273;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych <= '~') goto yy245;
- goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych <= '~') goto yy244;
+ goto yy251;
}
}
}
-yy274:
- YYDEBUG(274, *YYCURSOR);
+yy273:
+ YYDEBUG(273, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- goto yy245;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ goto yy244;
} else {
- if (yych == '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- goto yy245;
+ if (yych == '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ goto yy244;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- goto yy253;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ goto yy252;
} else {
- if (yych == ';') goto yy245;
- if (yych <= '<') goto yy252;
- goto yy245;
+ if (yych == ';') goto yy244;
+ if (yych <= '<') goto yy251;
+ goto yy244;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= '@') goto yy252;
- if (yych != 'L') goto yy253;
+ if (yych <= '@') goto yy251;
+ if (yych != 'L') goto yy252;
} else {
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy245;
- if (yych <= '_') goto yy253;
- goto yy252;
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy244;
+ if (yych <= '_') goto yy252;
+ goto yy251;
}
} else {
if (yych <= '{') {
- if (yych == 'l') goto yy275;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych == 'l') goto yy274;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych <= '~') goto yy245;
- goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych <= '~') goto yy244;
+ goto yy251;
}
}
}
-yy275:
- YYDEBUG(275, *YYCURSOR);
+yy274:
+ YYDEBUG(274, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 4) {
- goto yy253;
+ goto yy252;
}
if (yych <= ')') {
if (yych <= '\f') {
if (yych <= 0x08) {
- if (yych >= 0x01) goto yy252;
+ if (yych >= 0x01) goto yy251;
} else {
- if (yych <= '\t') goto yy277;
- if (yych >= '\v') goto yy252;
+ if (yych <= '\t') goto yy276;
+ if (yych >= '\v') goto yy251;
}
} else {
if (yych <= ' ') {
- if (yych <= '\r') goto yy276;
- if (yych <= 0x1F) goto yy252;
- goto yy277;
+ if (yych <= '\r') goto yy275;
+ if (yych <= 0x1F) goto yy251;
+ goto yy276;
} else {
- if (yych <= '"') goto yy276;
- if (yych <= '%') goto yy252;
+ if (yych <= '"') goto yy275;
+ if (yych <= '%') goto yy251;
}
}
} else {
if (yych <= ']') {
if (yych <= ';') {
- if (yych <= ':') goto yy252;
+ if (yych <= ':') goto yy251;
} else {
- if (yych != '=') goto yy252;
+ if (yych != '=') goto yy251;
}
} else {
if (yych <= '|') {
- if (yych <= '^') goto yy276;
- if (yych <= '{') goto yy252;
+ if (yych <= '^') goto yy275;
+ if (yych <= '{') goto yy251;
} else {
- if (yych != '~') goto yy252;
+ if (yych != '~') goto yy251;
}
}
}
-yy276:
- YYDEBUG(276, *YYCURSOR);
+yy275:
+ YYDEBUG(275, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 479 "Zend/zend_ini_scanner.l"
{
RETURN_TOKEN(NULL_NULL, "", 0);
}
-#line 4097 "Zend/zend_ini_scanner.c"
-yy277:
- YYDEBUG(277, *YYCURSOR);
+#line 4087 "Zend/zend_ini_scanner.c"
+yy276:
+ YYDEBUG(276, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
+ YYDEBUG(277, *YYCURSOR);
+ if (yych == '\t') goto yy276;
+ if (yych == ' ') goto yy276;
+ goto yy275;
+yy278:
YYDEBUG(278, *YYCURSOR);
- if (yych == '\t') goto yy277;
- if (yych == ' ') goto yy277;
- goto yy276;
-yy279:
- YYDEBUG(279, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- goto yy245;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ goto yy244;
} else {
- if (yych == '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- goto yy245;
+ if (yych == '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ goto yy244;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- goto yy253;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ goto yy252;
} else {
- if (yych == ';') goto yy245;
- if (yych <= '<') goto yy252;
- goto yy245;
+ if (yych == ';') goto yy244;
+ if (yych <= '<') goto yy251;
+ goto yy244;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= '@') goto yy252;
- if (yych == 'E') goto yy268;
- goto yy253;
- } else {
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy245;
- if (yych <= '_') goto yy253;
+ if (yych <= '@') goto yy251;
+ if (yych == 'E') goto yy267;
goto yy252;
+ } else {
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy244;
+ if (yych <= '_') goto yy252;
+ goto yy251;
}
} else {
if (yych <= '{') {
- if (yych == 'e') goto yy268;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych == 'e') goto yy267;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych <= '~') goto yy245;
- goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych <= '~') goto yy244;
+ goto yy251;
}
}
}
-yy280:
- YYDEBUG(280, *YYCURSOR);
+yy279:
+ YYDEBUG(279, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- goto yy245;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ goto yy244;
} else {
- if (yych == '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- goto yy245;
+ if (yych == '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ goto yy244;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- goto yy253;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ goto yy252;
} else {
- if (yych == ';') goto yy245;
- if (yych <= '<') goto yy252;
- goto yy245;
+ if (yych == ';') goto yy244;
+ if (yych <= '<') goto yy251;
+ goto yy244;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= '@') goto yy252;
- if (yych != 'L') goto yy253;
+ if (yych <= '@') goto yy251;
+ if (yych != 'L') goto yy252;
} else {
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy245;
- if (yych <= '_') goto yy253;
- goto yy252;
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy244;
+ if (yych <= '_') goto yy252;
+ goto yy251;
}
} else {
if (yych <= '{') {
- if (yych == 'l') goto yy281;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych == 'l') goto yy280;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych <= '~') goto yy245;
- goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych <= '~') goto yy244;
+ goto yy251;
}
}
}
-yy281:
- YYDEBUG(281, *YYCURSOR);
+yy280:
+ YYDEBUG(280, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- goto yy245;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ goto yy244;
} else {
- if (yych == '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- goto yy245;
+ if (yych == '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ goto yy244;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- goto yy253;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ goto yy252;
} else {
- if (yych == ';') goto yy245;
- if (yych <= '<') goto yy252;
- goto yy245;
+ if (yych == ';') goto yy244;
+ if (yych <= '<') goto yy251;
+ goto yy244;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= '@') goto yy252;
- if (yych != 'S') goto yy253;
+ if (yych <= '@') goto yy251;
+ if (yych != 'S') goto yy252;
} else {
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy245;
- if (yych <= '_') goto yy253;
- goto yy252;
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy244;
+ if (yych <= '_') goto yy252;
+ goto yy251;
}
} else {
if (yych <= '{') {
- if (yych == 's') goto yy282;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych == 's') goto yy281;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych <= '~') goto yy245;
- goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych <= '~') goto yy244;
+ goto yy251;
}
}
}
-yy282:
- YYDEBUG(282, *YYCURSOR);
+yy281:
+ YYDEBUG(281, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy252;
- goto yy245;
+ if (yych <= 0x00) goto yy244;
+ if (yych <= 0x08) goto yy251;
+ goto yy244;
} else {
- if (yych == '\r') goto yy245;
- if (yych <= 0x1F) goto yy252;
- goto yy245;
+ if (yych == '\r') goto yy244;
+ if (yych <= 0x1F) goto yy251;
+ goto yy244;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy252;
- if (yych <= ')') goto yy245;
- if (yych <= '/') goto yy252;
- goto yy253;
+ if (yych <= '%') goto yy251;
+ if (yych <= ')') goto yy244;
+ if (yych <= '/') goto yy251;
+ goto yy252;
} else {
- if (yych == ';') goto yy245;
- if (yych <= '<') goto yy252;
- goto yy245;
+ if (yych == ';') goto yy244;
+ if (yych <= '<') goto yy251;
+ goto yy244;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= '@') goto yy252;
- if (yych == 'E') goto yy268;
- goto yy253;
- } else {
- if (yych <= ']') goto yy252;
- if (yych <= '^') goto yy245;
- if (yych <= '_') goto yy253;
+ if (yych <= '@') goto yy251;
+ if (yych == 'E') goto yy267;
goto yy252;
+ } else {
+ if (yych <= ']') goto yy251;
+ if (yych <= '^') goto yy244;
+ if (yych <= '_') goto yy252;
+ goto yy251;
}
} else {
if (yych <= '{') {
- if (yych == 'e') goto yy268;
- if (yych <= 'z') goto yy253;
- goto yy252;
+ if (yych == 'e') goto yy267;
+ if (yych <= 'z') goto yy252;
+ goto yy251;
} else {
- if (yych == '}') goto yy252;
- if (yych <= '~') goto yy245;
- goto yy252;
+ if (yych == '}') goto yy251;
+ if (yych <= '~') goto yy244;
+ goto yy251;
}
}
}
-yy283:
- YYDEBUG(283, *YYCURSOR);
+yy282:
+ YYDEBUG(282, *YYCURSOR);
++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
-yy284:
- YYDEBUG(284, *YYCURSOR);
+yy283:
+ YYDEBUG(283, *YYCURSOR);
if (yybm[0+yych] & 32) {
- goto yy283;
+ goto yy282;
}
- if (yych >= '\v') goto yy287;
+ if (yych >= '\r') goto yy286;
+yy284:
+ YYDEBUG(284, *YYCURSOR);
+ ++YYCURSOR;
yy285:
YYDEBUG(285, *YYCURSOR);
- ++YYCURSOR;
-yy286:
- YYDEBUG(286, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 639 "Zend/zend_ini_scanner.l"
{ /* Comment */
@@ -4328,223 +4318,223 @@ yy286:
SCNG(lineno)++;
return END_OF_LINE;
}
-#line 4332 "Zend/zend_ini_scanner.c"
+#line 4322 "Zend/zend_ini_scanner.c"
+yy286:
+ YYDEBUG(286, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy284;
+ goto yy285;
yy287:
YYDEBUG(287, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy285;
- goto yy286;
-yy288:
- YYDEBUG(288, *YYCURSOR);
yyaccept = 3;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(289, *YYCURSOR);
+ YYDEBUG(288, *YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy288;
+ goto yy287;
}
if (yych <= ')') {
if (yych <= '\r') {
if (yych <= 0x08) {
- if (yych <= 0x00) goto yy240;
- goto yy251;
+ if (yych <= 0x00) goto yy239;
+ goto yy250;
} else {
- if (yych <= '\n') goto yy240;
- if (yych <= '\f') goto yy251;
- goto yy240;
+ if (yych <= '\n') goto yy239;
+ if (yych <= '\f') goto yy250;
+ goto yy239;
}
} else {
if (yych <= '#') {
- if (yych <= 0x1F) goto yy251;
- if (yych <= '"') goto yy240;
- goto yy251;
+ if (yych <= 0x1F) goto yy250;
+ if (yych <= '"') goto yy239;
+ goto yy250;
} else {
- if (yych <= '$') goto yy256;
- if (yych <= '%') goto yy251;
- goto yy240;
+ if (yych <= '$') goto yy255;
+ if (yych <= '%') goto yy250;
+ goto yy239;
}
}
} else {
if (yych <= ']') {
if (yych <= ';') {
- if (yych <= ':') goto yy251;
- goto yy240;
+ if (yych <= ':') goto yy250;
+ goto yy239;
} else {
- if (yych == '=') goto yy240;
- goto yy251;
+ if (yych == '=') goto yy239;
+ goto yy250;
}
} else {
if (yych <= '|') {
- if (yych <= '^') goto yy240;
- if (yych <= '{') goto yy251;
- goto yy240;
+ if (yych <= '^') goto yy239;
+ if (yych <= '{') goto yy250;
+ goto yy239;
} else {
- if (yych == '~') goto yy240;
- goto yy251;
+ if (yych == '~') goto yy239;
+ goto yy250;
}
}
}
-yy290:
- YYDEBUG(290, *YYCURSOR);
+yy289:
+ YYDEBUG(289, *YYCURSOR);
yyaccept = 3;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(291, *YYCURSOR);
+ YYDEBUG(290, *YYCURSOR);
if (yych <= '.') {
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy240;
- if (yych <= 0x08) goto yy251;
- goto yy240;
+ if (yych <= 0x00) goto yy239;
+ if (yych <= 0x08) goto yy250;
+ goto yy239;
} else {
- if (yych == '\r') goto yy240;
- goto yy251;
+ if (yych == '\r') goto yy239;
+ goto yy250;
}
} else {
if (yych <= '$') {
- if (yych <= '"') goto yy240;
- if (yych <= '#') goto yy251;
- goto yy256;
+ if (yych <= '"') goto yy239;
+ if (yych <= '#') goto yy250;
+ goto yy255;
} else {
- if (yych <= '%') goto yy251;
- if (yych <= ')') goto yy240;
- if (yych <= '-') goto yy251;
- goto yy288;
+ if (yych <= '%') goto yy250;
+ if (yych <= ')') goto yy239;
+ if (yych <= '-') goto yy250;
+ goto yy287;
}
}
} else {
if (yych <= '=') {
if (yych <= ':') {
- if (yych <= '/') goto yy251;
- if (yych <= '9') goto yy290;
- goto yy251;
+ if (yych <= '/') goto yy250;
+ if (yych <= '9') goto yy289;
+ goto yy250;
} else {
- if (yych == '<') goto yy251;
- goto yy240;
+ if (yych == '<') goto yy250;
+ goto yy239;
}
} else {
if (yych <= '{') {
- if (yych == '^') goto yy240;
- goto yy251;
+ if (yych == '^') goto yy239;
+ goto yy250;
} else {
- if (yych == '}') goto yy251;
- if (yych <= '~') goto yy240;
- goto yy251;
+ if (yych == '}') goto yy250;
+ if (yych <= '~') goto yy239;
+ goto yy250;
}
}
}
-yy292:
- YYDEBUG(292, *YYCURSOR);
+yy291:
+ YYDEBUG(291, *YYCURSOR);
yyaccept = 3;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(293, *YYCURSOR);
+ YYDEBUG(292, *YYCURSOR);
if (yych <= '/') {
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy240;
- if (yych <= 0x08) goto yy251;
- goto yy240;
+ if (yych <= 0x00) goto yy239;
+ if (yych <= 0x08) goto yy250;
+ goto yy239;
} else {
- if (yych == '\r') goto yy240;
- goto yy251;
+ if (yych == '\r') goto yy239;
+ goto yy250;
}
} else {
if (yych <= '$') {
- if (yych <= '"') goto yy240;
- if (yych <= '#') goto yy251;
- goto yy256;
+ if (yych <= '"') goto yy239;
+ if (yych <= '#') goto yy250;
+ goto yy255;
} else {
- if (yych <= '%') goto yy251;
- if (yych <= ')') goto yy240;
- goto yy251;
+ if (yych <= '%') goto yy250;
+ if (yych <= ')') goto yy239;
+ goto yy250;
}
}
} else {
if (yych <= ']') {
if (yych <= ';') {
- if (yych <= '9') goto yy292;
- if (yych <= ':') goto yy251;
- goto yy240;
+ if (yych <= '9') goto yy291;
+ if (yych <= ':') goto yy250;
+ goto yy239;
} else {
- if (yych == '=') goto yy240;
- goto yy251;
+ if (yych == '=') goto yy239;
+ goto yy250;
}
} else {
if (yych <= '|') {
- if (yych <= '^') goto yy240;
- if (yych <= '{') goto yy251;
- goto yy240;
+ if (yych <= '^') goto yy239;
+ if (yych <= '{') goto yy250;
+ goto yy239;
} else {
- if (yych == '~') goto yy240;
- goto yy251;
+ if (yych == '~') goto yy239;
+ goto yy250;
}
}
}
-yy294:
- YYDEBUG(294, *YYCURSOR);
+yy293:
+ YYDEBUG(293, *YYCURSOR);
yyaccept = 3;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(295, *YYCURSOR);
+ YYDEBUG(294, *YYCURSOR);
if (yych <= '/') {
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy240;
- if (yych <= 0x08) goto yy251;
- goto yy240;
+ if (yych <= 0x00) goto yy239;
+ if (yych <= 0x08) goto yy250;
+ goto yy239;
} else {
- if (yych == '\r') goto yy240;
- goto yy251;
+ if (yych == '\r') goto yy239;
+ goto yy250;
}
} else {
if (yych <= '$') {
- if (yych <= '"') goto yy240;
- if (yych <= '#') goto yy251;
- goto yy256;
+ if (yych <= '"') goto yy239;
+ if (yych <= '#') goto yy250;
+ goto yy255;
} else {
- if (yych <= '%') goto yy251;
- if (yych <= ')') goto yy240;
- goto yy251;
+ if (yych <= '%') goto yy250;
+ if (yych <= ')') goto yy239;
+ goto yy250;
}
}
} else {
if (yych <= ']') {
if (yych <= ';') {
- if (yych <= '9') goto yy294;
- if (yych <= ':') goto yy251;
- goto yy240;
+ if (yych <= '9') goto yy293;
+ if (yych <= ':') goto yy250;
+ goto yy239;
} else {
- if (yych == '=') goto yy240;
- goto yy251;
+ if (yych == '=') goto yy239;
+ goto yy250;
}
} else {
if (yych <= '|') {
- if (yych <= '^') goto yy240;
- if (yych <= '{') goto yy251;
- goto yy240;
+ if (yych <= '^') goto yy239;
+ if (yych <= '{') goto yy250;
+ goto yy239;
} else {
- if (yych == '~') goto yy240;
- goto yy251;
+ if (yych == '~') goto yy239;
+ goto yy250;
}
}
}
-yy296:
- YYDEBUG(296, *YYCURSOR);
+yy295:
+ YYDEBUG(295, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(297, *YYCURSOR);
+ YYDEBUG(296, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy296;
+ goto yy295;
}
- YYDEBUG(298, *YYCURSOR);
+ YYDEBUG(297, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(299, *YYCURSOR);
+ YYDEBUG(298, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 418 "Zend/zend_ini_scanner.l"
{ /* Raw string */
@@ -4555,66 +4545,66 @@ yy296:
}
RETURN_TOKEN(TC_RAW, yytext, yyleng);
}
-#line 4559 "Zend/zend_ini_scanner.c"
-yy300:
- YYDEBUG(300, *YYCURSOR);
+#line 4549 "Zend/zend_ini_scanner.c"
+yy299:
+ YYDEBUG(299, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(301, *YYCURSOR);
+ YYDEBUG(300, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 451 "Zend/zend_ini_scanner.l"
{ /* Variable start */
yy_push_state(ST_VARNAME);
return TC_DOLLAR_CURLY;
}
-#line 4570 "Zend/zend_ini_scanner.c"
-yy302:
- YYDEBUG(302, *YYCURSOR);
+#line 4560 "Zend/zend_ini_scanner.c"
+yy301:
+ YYDEBUG(301, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
+yy302:
+ YYDEBUG(302, *YYCURSOR);
+ if (yych == '\t') goto yy301;
+ if (yych == ' ') goto yy301;
+ goto yy231;
yy303:
YYDEBUG(303, *YYCURSOR);
- if (yych == '\t') goto yy302;
- if (yych == ' ') goto yy302;
- goto yy232;
+ yych = *++YYCURSOR;
+ goto yy228;
yy304:
YYDEBUG(304, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy229;
-yy305:
- YYDEBUG(305, *YYCURSOR);
yyaccept = 1;
YYMARKER = ++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
-yy306:
- YYDEBUG(306, *YYCURSOR);
+yy305:
+ YYDEBUG(305, *YYCURSOR);
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x08) goto yy227;
- if (yych <= '\t') goto yy305;
- goto yy304;
+ if (yych <= 0x08) goto yy226;
+ if (yych <= '\t') goto yy304;
+ goto yy303;
} else {
- if (yych == '\r') goto yy308;
- goto yy227;
+ if (yych == '\r') goto yy307;
+ goto yy226;
}
} else {
if (yych <= '"') {
- if (yych <= ' ') goto yy305;
- if (yych <= '!') goto yy227;
+ if (yych <= ' ') goto yy304;
+ if (yych <= '!') goto yy226;
} else {
- if (yych == ';') goto yy283;
- goto yy227;
+ if (yych == ';') goto yy282;
+ goto yy226;
}
}
- YYDEBUG(307, *YYCURSOR);
+ YYDEBUG(306, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy234;
-yy308:
- YYDEBUG(308, *YYCURSOR);
+ goto yy233;
+yy307:
+ YYDEBUG(307, *YYCURSOR);
++YYCURSOR;
- if ((yych = *YYCURSOR) == '\n') goto yy304;
- goto yy229;
+ if ((yych = *YYCURSOR) == '\n') goto yy303;
+ goto yy228;
}
/* *********************************** */
yyc_ST_VARNAME:
@@ -4653,49 +4643,49 @@ yyc_ST_VARNAME:
128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128,
};
- YYDEBUG(309, *YYCURSOR);
+ YYDEBUG(308, *YYCURSOR);
YYFILL(2);
yych = *YYCURSOR;
if (yych <= ')') {
if (yych <= '"') {
if (yych <= '\f') {
- if (yych <= 0x08) goto yy311;
- if (yych <= '\n') goto yy313;
+ if (yych <= 0x08) goto yy310;
+ if (yych <= '\n') goto yy312;
} else {
- if (yych <= '\r') goto yy313;
- if (yych >= '!') goto yy313;
+ if (yych <= '\r') goto yy312;
+ if (yych >= '!') goto yy312;
}
} else {
if (yych <= '%') {
- if (yych == '$') goto yy313;
+ if (yych == '$') goto yy312;
} else {
- if (yych != '\'') goto yy313;
+ if (yych != '\'') goto yy312;
}
}
} else {
if (yych <= '[') {
if (yych <= '<') {
- if (yych == ';') goto yy313;
+ if (yych == ';') goto yy312;
} else {
- if (yych <= '=') goto yy313;
- if (yych >= '[') goto yy313;
+ if (yych <= '=') goto yy312;
+ if (yych >= '[') goto yy312;
}
} else {
if (yych <= 'z') {
- if (yych == '^') goto yy313;
+ if (yych == '^') goto yy312;
} else {
- if (yych == '}') goto yy315;
- if (yych <= '~') goto yy313;
+ if (yych == '}') goto yy314;
+ if (yych <= '~') goto yy312;
}
}
}
-yy311:
- YYDEBUG(311, *YYCURSOR);
+yy310:
+ YYDEBUG(310, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy318;
-yy312:
- YYDEBUG(312, *YYCURSOR);
+ goto yy317;
+yy311:
+ YYDEBUG(311, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 456 "Zend/zend_ini_scanner.l"
{ /* Variable name */
@@ -4707,39 +4697,39 @@ yy312:
RETURN_TOKEN(TC_VARNAME, yytext, yyleng);
}
-#line 4711 "Zend/zend_ini_scanner.c"
-yy313:
- YYDEBUG(313, *YYCURSOR);
+#line 4701 "Zend/zend_ini_scanner.c"
+yy312:
+ YYDEBUG(312, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(314, *YYCURSOR);
+ YYDEBUG(313, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 650 "Zend/zend_ini_scanner.l"
{
return 0;
}
-#line 4721 "Zend/zend_ini_scanner.c"
-yy315:
- YYDEBUG(315, *YYCURSOR);
+#line 4711 "Zend/zend_ini_scanner.c"
+yy314:
+ YYDEBUG(314, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(316, *YYCURSOR);
+ YYDEBUG(315, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 466 "Zend/zend_ini_scanner.l"
{ /* Variable end */
yy_pop_state();
return '}';
}
-#line 4732 "Zend/zend_ini_scanner.c"
-yy317:
- YYDEBUG(317, *YYCURSOR);
+#line 4722 "Zend/zend_ini_scanner.c"
+yy316:
+ YYDEBUG(316, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy318:
- YYDEBUG(318, *YYCURSOR);
+yy317:
+ YYDEBUG(317, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy317;
+ goto yy316;
}
- goto yy312;
+ goto yy311;
}
}
#line 654 "Zend/zend_ini_scanner.l"
diff --git a/Zend/zend_ini_scanner_defs.h b/Zend/zend_ini_scanner_defs.h
index 017865f9d3..287d7bc1fb 100644
--- a/Zend/zend_ini_scanner_defs.h
+++ b/Zend/zend_ini_scanner_defs.h
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.14.3 */
+/* Generated by re2c 0.13.5 */
#line 3 "Zend/zend_ini_scanner_defs.h"
enum YYCONDTYPE {
diff --git a/Zend/zend_interfaces.c b/Zend/zend_interfaces.c
index 81038e4bdc..6eb4e17866 100644
--- a/Zend/zend_interfaces.c
+++ b/Zend/zend_interfaces.c
@@ -36,8 +36,6 @@ ZEND_API zval* zend_call_method(zval *object, zend_class_entry *obj_ce, zend_fun
int result;
zend_fcall_info fci;
zval retval;
- HashTable *function_table;
-
zval params[2];
if (param_count > 0) {
@@ -109,13 +107,6 @@ ZEND_API zval* zend_call_method(zval *object, zend_class_entry *obj_ce, zend_fun
zend_error_noreturn(E_CORE_ERROR, "Couldn't execute method %s%s%s", obj_ce ? ZSTR_VAL(obj_ce->name) : "", obj_ce ? "::" : "", function_name);
}
}
- /* copy arguments back, they might be changed by references */
- if (param_count > 0 && Z_ISREF(params[0]) && !Z_ISREF_P(arg1)) {
- ZVAL_COPY_VALUE(arg1, &params[0]);
- }
- if (param_count > 1 && Z_ISREF(params[1]) && !Z_ISREF_P(arg2)) {
- ZVAL_COPY_VALUE(arg2, &params[1]);
- }
if (!retval_ptr) {
zval_ptr_dtor(&retval);
return NULL;
@@ -189,16 +180,6 @@ ZEND_API zval *zend_user_it_get_current_data(zend_object_iterator *_iter)
}
/* }}} */
-/* {{{ zend_user_it_get_current_key_default */
-#if 0
-static int zend_user_it_get_current_key_default(zend_object_iterator *_iter, char **str_key, uint *str_key_len, ulong *int_key)
-{
- *int_key = _iter->index;
- return HASH_KEY_IS_LONG;
-}
-#endif
-/* }}} */
-
/* {{{ zend_user_it_get_current_key */
ZEND_API void zend_user_it_get_current_key(zend_object_iterator *_iter, zval *key)
{
@@ -392,15 +373,6 @@ static int zend_implement_iterator(zend_class_entry *interface, zend_class_entry
/* {{{ zend_implement_arrayaccess */
static int zend_implement_arrayaccess(zend_class_entry *interface, zend_class_entry *class_type)
{
-#if 0
- /* get ht from ce */
- if (ht->read_dimension != zend_std_read_dimension
- || ht->write_dimension != zend_std_write_dimension
- || ht->has_dimension != zend_std_has_dimension
- || ht->unset_dimension != zend_std_unset_dimension) {
- return FAILURE;
- }
-#endif
return SUCCESS;
}
/* }}}*/
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index 3c7117930e..31be044aa9 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -327,14 +327,14 @@ top_statement:
{ $$ = zend_ast_create(ZEND_AST_NAMESPACE, NULL, $4); }
| T_USE mixed_group_use_declaration ';' { $$ = $2; }
| T_USE use_type group_use_declaration ';' { $$ = $3; $$->attr = $2; }
- | T_USE use_declarations ';' { $$ = $2; $$->attr = T_CLASS; }
+ | T_USE use_declarations ';' { $$ = $2; $$->attr = ZEND_SYMBOL_CLASS; }
| T_USE use_type use_declarations ';' { $$ = $3; $$->attr = $2; }
| T_CONST const_list ';' { $$ = $2; }
;
use_type:
- T_FUNCTION { $$ = T_FUNCTION; }
- | T_CONST { $$ = T_CONST; }
+ T_FUNCTION { $$ = ZEND_SYMBOL_FUNCTION; }
+ | T_CONST { $$ = ZEND_SYMBOL_CONST; }
;
group_use_declaration:
@@ -373,7 +373,7 @@ use_declarations:
;
inline_use_declaration:
- unprefixed_use_declaration { $$ = $1; $$->attr = T_CLASS; }
+ unprefixed_use_declaration { $$ = $1; $$->attr = ZEND_SYMBOL_CLASS; }
| use_type unprefixed_use_declaration { $$ = $2; $$->attr = $1; }
;
diff --git a/Zend/zend_multiply.h b/Zend/zend_multiply.h
index da0bc16933..9790c1faa3 100644
--- a/Zend/zend_multiply.h
+++ b/Zend/zend_multiply.h
@@ -19,10 +19,32 @@
/* $Id$ */
+#include "zend_portability.h"
+
#ifndef ZEND_MULTIPLY_H
#define ZEND_MULTIPLY_H
-#if (defined(__i386__) || defined(__x86_64__)) && defined(__GNUC__)
+#if PHP_HAVE_BUILTIN_SMULL_OVERFLOW && SIZEOF_LONG == SIZEOF_ZEND_LONG
+
+#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \
+ long __tmpvar; \
+ if (((usedval) = __builtin_smull_overflow((a), (b), &__tmpvar))) { \
+ (dval) = (double) (a) * (double) (b); \
+ } \
+ else (lval) = __tmpvar; \
+} while (0)
+
+#elif PHP_HAVE_BUILTIN_SMULLL_OVERFLOW && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
+
+#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \
+ long long __tmpvar; \
+ if (((usedval) = __builtin_smulll_overflow((a), (b), &__tmpvar))) { \
+ (dval) = (double) (a) * (double) (b); \
+ } \
+ else (lval) = __tmpvar; \
+} while (0)
+
+#elif (defined(__i386__) || defined(__x86_64__)) && defined(__GNUC__)
#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \
zend_long __tmpvar; \
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index 04c828872d..2273b06fb3 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -206,10 +206,8 @@ static void zend_std_call_getter(zval *object, zval *member, zval *retval) /* {{
}
/* }}} */
-static int zend_std_call_setter(zval *object, zval *member, zval *value) /* {{{ */
+static void zend_std_call_setter(zval *object, zval *member, zval *value) /* {{{ */
{
- zval retval;
- int result;
zend_class_entry *ce = Z_OBJCE_P(object);
zend_class_entry *orig_fake_scope = EG(fake_scope);
@@ -218,20 +216,10 @@ static int zend_std_call_setter(zval *object, zval *member, zval *value) /* {{{
/* __set handler is called with two arguments:
property name
value to be set
-
- it should return whether the call was successful or not
*/
- zend_call_method_with_2_params(object, ce, &ce->__set, ZEND_SET_FUNC_NAME, &retval, member, value);
+ zend_call_method_with_2_params(object, ce, &ce->__set, ZEND_SET_FUNC_NAME, NULL, member, value);
- if (Z_TYPE(retval) != IS_UNDEF) {
- result = i_zend_is_true(&retval) ? SUCCESS : FAILURE;
- zval_ptr_dtor(&retval);
- EG(fake_scope) = orig_fake_scope;
- return result;
- } else {
- EG(fake_scope) = orig_fake_scope;
- return FAILURE;
- }
+ EG(fake_scope) = orig_fake_scope;
}
/* }}} */
@@ -732,9 +720,7 @@ found:
ZVAL_COPY(&tmp_object, object);
(*guard) |= IN_SET; /* prevent circular setting */
- if (zend_std_call_setter(&tmp_object, member, value) != SUCCESS) {
- /* for now, just ignore it - __set should take care of warnings, etc. */
- }
+ zend_std_call_setter(&tmp_object, member, value);
(*guard) &= ~IN_SET;
zval_ptr_dtor(&tmp_object);
} else if (EXPECTED(property_offset != ZEND_WRONG_PROPERTY_OFFSET)) {
diff --git a/Zend/zend_objects.c b/Zend/zend_objects.c
index 1e358996ed..07b586b6f8 100644
--- a/Zend/zend_objects.c
+++ b/Zend/zend_objects.c
@@ -32,7 +32,7 @@ ZEND_API void zend_object_std_init(zend_object *object, zend_class_entry *ce)
zval *p, *end;
GC_REFCOUNT(object) = 1;
- GC_TYPE_INFO(object) = IS_OBJECT;
+ GC_TYPE_INFO(object) = IS_OBJECT | (GC_COLLECTABLE << GC_FLAGS_SHIFT);
object->ce = ce;
object->properties = NULL;
zend_objects_store_put(object);
diff --git a/Zend/zend_objects_API.c b/Zend/zend_objects_API.c
index 00d9425f18..d828f55401 100644
--- a/Zend/zend_objects_API.c
+++ b/Zend/zend_objects_API.c
@@ -210,12 +210,6 @@ ZEND_API void zend_object_store_set_object(zval *zobject, zend_object *object)
EG(objects_store).object_buckets[Z_OBJ_HANDLE_P(zobject)] = object;
}
-/* Called when the ctor was terminated by an exception */
-ZEND_API void zend_object_store_ctor_failed(zend_object *obj)
-{
- GC_FLAGS(obj) |= IS_OBJ_DESTRUCTOR_CALLED;
-}
-
ZEND_API zend_object_handlers *zend_get_std_object_handlers(void)
{
return &std_object_handlers;
diff --git a/Zend/zend_objects_API.h b/Zend/zend_objects_API.h
index dbdb02f984..ac4485fea3 100644
--- a/Zend/zend_objects_API.h
+++ b/Zend/zend_objects_API.h
@@ -61,7 +61,12 @@ ZEND_API void zend_objects_store_free(zend_object *object);
/* See comment in zend_objects_API.c before you use this */
ZEND_API void zend_object_store_set_object(zval *zobject, zend_object *object);
-ZEND_API void zend_object_store_ctor_failed(zend_object *object);
+
+/* Called when the ctor was terminated by an exception */
+static zend_always_inline void zend_object_store_ctor_failed(zend_object *obj)
+{
+ GC_FLAGS(obj) |= IS_OBJ_DESTRUCTOR_CALLED;
+}
ZEND_API void zend_objects_store_free_object_storage(zend_objects_store *objects);
@@ -76,7 +81,7 @@ static zend_always_inline void zend_object_release(zend_object *obj)
{
if (--GC_REFCOUNT(obj) == 0) {
zend_objects_store_del(obj);
- } else if (UNEXPECTED(!GC_INFO(obj))) {
+ } else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
gc_possible_root((zend_refcounted*)obj);
}
}
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index 4159e43e53..8005577694 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -411,19 +411,6 @@ try_again:
ZEND_API void ZEND_FASTCALL convert_to_null(zval *op) /* {{{ */
{
- if (Z_TYPE_P(op) == IS_OBJECT) {
- if (Z_OBJ_HT_P(op)->cast_object) {
- zval org;
-
- ZVAL_COPY_VALUE(&org, op);
- if (Z_OBJ_HT_P(op)->cast_object(&org, op, IS_NULL) == SUCCESS) {
- zval_dtor(&org);
- return;
- }
- ZVAL_COPY_VALUE(op, &org);
- }
- }
-
zval_ptr_dtor(op);
ZVAL_NULL(op);
}
@@ -601,25 +588,17 @@ try_again:
if (obj_ht) {
zend_array *arr;
+ /* fast copy */
if (!Z_OBJCE_P(op)->default_properties_count &&
obj_ht == Z_OBJ_P(op)->properties &&
- !ZEND_HASH_GET_APPLY_COUNT(Z_OBJ_P(op)->properties)) {
- /* fast copy */
- if (EXPECTED(Z_OBJ_P(op)->handlers == &std_object_handlers)) {
- arr = obj_ht;
- if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(op)->properties) & IS_ARRAY_IMMUTABLE))) {
- GC_REFCOUNT(Z_OBJ_P(op)->properties)++;
- }
- } else {
- arr = zend_array_dup(obj_ht);
- }
- zval_dtor(op);
- ZVAL_ARR(op, arr);
+ !ZEND_HASH_GET_APPLY_COUNT(Z_OBJ_P(op)->properties) &&
+ EXPECTED(Z_OBJ_P(op)->handlers == &std_object_handlers)) {
+ arr = zend_proptable_to_symtable(obj_ht, 0);
} else {
- arr = zend_array_dup(obj_ht);
- zval_dtor(op);
- ZVAL_ARR(op, arr);
+ arr = zend_proptable_to_symtable(obj_ht, 1);
}
+ zval_dtor(op);
+ ZVAL_ARR(op, arr);
return;
}
} else {
@@ -658,10 +637,12 @@ try_again:
case IS_ARRAY:
{
HashTable *ht = Z_ARR_P(op);
- if (Z_IMMUTABLE_P(op)) {
+ ht = zend_symtable_to_proptable(ht);
+ if (GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) {
/* TODO: try not to duplicate immutable arrays as well ??? */
ht = zend_array_dup(ht);
}
+ zval_dtor(op);
object_and_properties_init(op, zend_standard_class_def, ht);
break;
}
diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h
index a404b79c1c..7fc11cc144 100644
--- a/Zend/zend_operators.h
+++ b/Zend/zend_operators.h
@@ -35,13 +35,10 @@
#include <ieeefp.h>
#endif
+#include "zend_portability.h"
#include "zend_strtod.h"
#include "zend_multiply.h"
-#if 0&&HAVE_BCMATH
-#include "ext/bcmath/libbcmath/src/bcmath.h"
-#endif
-
#define LONG_SIGN_MASK (((zend_long)1) << (8*sizeof(zend_long)-1))
BEGIN_EXTERN_C()
@@ -444,7 +441,23 @@ ZEND_API void zend_update_current_locale(void);
static zend_always_inline void fast_long_increment_function(zval *op1)
{
-#if defined(__GNUC__) && defined(__i386__)
+#if PHP_HAVE_BUILTIN_SADDL_OVERFLOW && SIZEOF_LONG == SIZEOF_ZEND_LONG
+ long lresult;
+ if (UNEXPECTED(__builtin_saddl_overflow(Z_LVAL_P(op1), 1, &lresult))) {
+ /* switch to double */
+ ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
+ } else {
+ Z_LVAL_P(op1) = lresult;
+ }
+#elif PHP_HAVE_BUILTIN_SADDLL_OVERFLOW && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
+ long long llresult;
+ if (UNEXPECTED(__builtin_saddll_overflow(Z_LVAL_P(op1), 1, &llresult))) {
+ /* switch to double */
+ ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
+ } else {
+ Z_LVAL_P(op1) = llresult;
+ }
+#elif defined(__GNUC__) && defined(__i386__)
__asm__(
"incl (%0)\n\t"
"jno 0f\n\t"
@@ -482,7 +495,23 @@ static zend_always_inline void fast_long_increment_function(zval *op1)
static zend_always_inline void fast_long_decrement_function(zval *op1)
{
-#if defined(__GNUC__) && defined(__i386__)
+#if PHP_HAVE_BUILTIN_SSUBL_OVERFLOW && SIZEOF_LONG == SIZEOF_ZEND_LONG
+ long lresult;
+ if (UNEXPECTED(__builtin_ssubl_overflow(Z_LVAL_P(op1), 1, &lresult))) {
+ /* switch to double */
+ ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
+ } else {
+ Z_LVAL_P(op1) = lresult;
+ }
+#elif PHP_HAVE_BUILTIN_SSUBLL_OVERFLOW && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
+ long long llresult;
+ if (UNEXPECTED(__builtin_ssubll_overflow(Z_LVAL_P(op1), 1, &llresult))) {
+ /* switch to double */
+ ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
+ } else {
+ Z_LVAL_P(op1) = llresult;
+ }
+#elif defined(__GNUC__) && defined(__i386__)
__asm__(
"decl (%0)\n\t"
"jno 0f\n\t"
@@ -520,7 +549,21 @@ static zend_always_inline void fast_long_decrement_function(zval *op1)
static zend_always_inline void fast_long_add_function(zval *result, zval *op1, zval *op2)
{
-#if defined(__GNUC__) && defined(__i386__) \
+#if PHP_HAVE_BUILTIN_SADDL_OVERFLOW && SIZEOF_LONG == SIZEOF_ZEND_LONG
+ long lresult;
+ if (UNEXPECTED(__builtin_saddl_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult))) {
+ ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
+ } else {
+ ZVAL_LONG(result, lresult);
+ }
+#elif PHP_HAVE_BUILTIN_SADDLL_OVERFLOW && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
+ long long llresult;
+ if (UNEXPECTED(__builtin_saddll_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &llresult))) {
+ ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
+ } else {
+ ZVAL_LONG(result, llresult);
+ }
+#elif defined(__GNUC__) && defined(__i386__) \
&& !(4 == __GNUC__ && 8 == __GNUC_MINOR__) \
&& !(4 == __GNUC__ && 9 == __GNUC_MINOR__ && (defined(__PIC__) || defined(__PIE__)))
/* Position-independent builds fail with gcc-4.9.x */
@@ -609,7 +652,21 @@ static zend_always_inline int fast_add_function(zval *result, zval *op1, zval *o
static zend_always_inline void fast_long_sub_function(zval *result, zval *op1, zval *op2)
{
-#if defined(__GNUC__) && defined(__i386__) && \
+#if PHP_HAVE_BUILTIN_SSUBL_OVERFLOW && SIZEOF_LONG == SIZEOF_ZEND_LONG
+ long lresult;
+ if (UNEXPECTED(__builtin_ssubl_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult))) {
+ ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
+ } else {
+ ZVAL_LONG(result, lresult);
+ }
+#elif PHP_HAVE_BUILTIN_SSUBLL_OVERFLOW && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
+ long long llresult;
+ if (UNEXPECTED(__builtin_ssubll_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &llresult))) {
+ ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
+ } else {
+ ZVAL_LONG(result, llresult);
+ }
+#elif defined(__GNUC__) && defined(__i386__) && \
!(4 == __GNUC__ && 8 == __GNUC_MINOR__) && \
!(4 == __GNUC__ && 9 == __GNUC_MINOR__ && (defined(__PIC__) || defined(__PIE__)))
/* Position-independent builds fail with gcc-4.9.x */
diff --git a/Zend/zend_portability.h b/Zend/zend_portability.h
index 829fba1abd..9f1259f7a4 100644
--- a/Zend/zend_portability.h
+++ b/Zend/zend_portability.h
@@ -38,9 +38,6 @@
#ifdef ZEND_WIN32
# include "zend_config.w32.h"
# define ZEND_PATHS_SEPARATOR ';'
-#elif defined(NETWARE)
-# include <zend_config.h>
-# define ZEND_PATHS_SEPARATOR ';'
#elif defined(__riscos__)
# include <zend_config.h>
# define ZEND_PATHS_SEPARATOR ';'
@@ -53,6 +50,7 @@
#include <stdio.h>
#include <assert.h>
+#include <math.h>
#ifdef HAVE_UNIX_H
# include <unix.h>
@@ -339,7 +337,7 @@ char *alloca();
#endif
-#if (HAVE_ALLOCA || (defined (__GNUC__) && __GNUC__ >= 2)) && !(defined(ZTS) && defined(NETWARE)) && !(defined(ZTS) && defined(HPUX)) && !defined(DARWIN)
+#if (HAVE_ALLOCA || (defined (__GNUC__) && __GNUC__ >= 2)) && !(defined(ZTS)) && !(defined(ZTS) && defined(HPUX)) && !defined(DARWIN)
# define ZEND_ALLOCA_MAX_SIZE (32 * 1024)
# define ALLOCA_FLAG(name) \
zend_bool name;
@@ -422,6 +420,51 @@ char *alloca();
#undef MAX
#define MAX(a, b) (((a)>(b))?(a):(b))
#define MIN(a, b) (((a)<(b))?(a):(b))
+
+/* We always define a function, even if there's a macro or expression we could
+ * alias, so that using it in contexts where we can't make function calls
+ * won't fail to compile on some machines and not others.
+ */
+static zend_always_inline double _zend_get_inf(void) /* {{{ */
+{
+#ifdef INFINITY
+ return INFINITY;
+#elif HAVE_HUGE_VAL_INF
+ return HUGE_VAL;
+#elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha)
+# define _zend_DOUBLE_INFINITY_HIGH 0x7ff00000
+ double val = 0.0;
+ ((uint32_t*)&val)[1] = _zend_DOUBLE_INFINITY_HIGH;
+ ((uint32_t*)&val)[0] = 0;
+ return val;
+#elif HAVE_ATOF_ACCEPTS_INF
+ return atof("INF");
+#else
+ return 1.0/0.0;
+#endif
+} /* }}} */
+#define ZEND_INFINITY (_zend_get_inf())
+
+static zend_always_inline double _zend_get_nan(void) /* {{{ */
+{
+#ifdef NAN
+ return NAN;
+#elif HAVE_HUGE_VAL_NAN
+ return HUGE_VAL + -HUGE_VAL;
+#elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha)
+# define _zend_DOUBLE_QUIET_NAN_HIGH 0xfff80000
+ double val = 0.0;
+ ((uint32_t*)&val)[1] = _zend_DOUBLE_QUIET_NAN_HIGH;
+ ((uint32_t*)&val)[0] = 0;
+ return val;
+#elif HAVE_ATOF_ACCEPTS_NAN
+ return atof("NAN");
+#else
+ return 0.0/0.0;
+#endif
+} /* }}} */
+#define ZEND_NAN (_zend_get_nan())
+
#define ZEND_STRL(str) (str), (sizeof(str)-1)
#define ZEND_STRS(str) (str), (sizeof(str))
#define ZEND_NORMALIZE_BOOL(n) \
diff --git a/Zend/zend_stream.c b/Zend/zend_stream.c
index b3553bd3cc..680a50aea0 100644
--- a/Zend/zend_stream.c
+++ b/Zend/zend_stream.c
@@ -156,16 +156,7 @@ static size_t zend_stream_read(zend_file_handle *file_handle, char *buf, size_t
int c = '*';
size_t n;
-#ifdef NETWARE
- /*
- c != 4 check is there as fread of a character in NetWare LibC gives 4 upon ^D character.
- Ascii value 4 is actually EOT character which is not defined anywhere in the LibC
- or else we can use instead of hardcoded 4.
- */
- for (n = 0; n < len && (c = zend_stream_getc(file_handle)) != EOF && c != 4 && c != '\n'; ++n) {
-#else
for (n = 0; n < len && (c = zend_stream_getc(file_handle)) != EOF && c != '\n'; ++n) {
-#endif
buf[n] = (char)c;
}
if (c == '\n') {
diff --git a/Zend/zend_types.h b/Zend/zend_types.h
index 2a108877bf..9d4f6a7d4c 100644
--- a/Zend/zend_types.h
+++ b/Zend/zend_types.h
@@ -390,24 +390,33 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) {
#define Z_GC_TYPE_INFO(zval) GC_TYPE_INFO(Z_COUNTED(zval))
#define Z_GC_TYPE_INFO_P(zval_p) Z_GC_TYPE_INFO(*(zval_p))
+#define GC_FLAGS_SHIFT 8
+#define GC_INFO_SHIFT 16
+#define GC_INFO_MASK 0xffff0000
+
+/* zval.value->gc.u.v.flags */
+#define GC_COLLECTABLE (1<<7)
+
+#define GC_ARRAY (IS_ARRAY | (GC_COLLECTABLE << GC_FLAGS_SHIFT))
+#define GC_OBJECT (IS_OBJECT | (GC_COLLECTABLE << GC_FLAGS_SHIFT))
+
/* zval.u1.v.type_flags */
#define IS_TYPE_CONSTANT (1<<0)
#define IS_TYPE_IMMUTABLE (1<<1)
#define IS_TYPE_REFCOUNTED (1<<2)
-#define IS_TYPE_COLLECTABLE (1<<3)
#define IS_TYPE_COPYABLE (1<<4)
/* extended types */
#define IS_INTERNED_STRING_EX IS_STRING
-#define IS_STRING_EX (IS_STRING | (( IS_TYPE_REFCOUNTED | IS_TYPE_COPYABLE) << Z_TYPE_FLAGS_SHIFT))
-#define IS_ARRAY_EX (IS_ARRAY | (( IS_TYPE_REFCOUNTED | IS_TYPE_COLLECTABLE | IS_TYPE_COPYABLE) << Z_TYPE_FLAGS_SHIFT))
-#define IS_OBJECT_EX (IS_OBJECT | (( IS_TYPE_REFCOUNTED | IS_TYPE_COLLECTABLE ) << Z_TYPE_FLAGS_SHIFT))
-#define IS_RESOURCE_EX (IS_RESOURCE | (( IS_TYPE_REFCOUNTED ) << Z_TYPE_FLAGS_SHIFT))
-#define IS_REFERENCE_EX (IS_REFERENCE | (( IS_TYPE_REFCOUNTED ) << Z_TYPE_FLAGS_SHIFT))
+#define IS_STRING_EX (IS_STRING | (( IS_TYPE_REFCOUNTED | IS_TYPE_COPYABLE) << Z_TYPE_FLAGS_SHIFT))
+#define IS_ARRAY_EX (IS_ARRAY | (( IS_TYPE_REFCOUNTED | IS_TYPE_COPYABLE) << Z_TYPE_FLAGS_SHIFT))
+#define IS_OBJECT_EX (IS_OBJECT | (( IS_TYPE_REFCOUNTED ) << Z_TYPE_FLAGS_SHIFT))
+#define IS_RESOURCE_EX (IS_RESOURCE | (( IS_TYPE_REFCOUNTED ) << Z_TYPE_FLAGS_SHIFT))
+#define IS_REFERENCE_EX (IS_REFERENCE | (( IS_TYPE_REFCOUNTED ) << Z_TYPE_FLAGS_SHIFT))
-#define IS_CONSTANT_EX (IS_CONSTANT | ((IS_TYPE_CONSTANT | IS_TYPE_REFCOUNTED | IS_TYPE_COPYABLE) << Z_TYPE_FLAGS_SHIFT))
-#define IS_CONSTANT_AST_EX (IS_CONSTANT_AST | ((IS_TYPE_CONSTANT | IS_TYPE_REFCOUNTED | IS_TYPE_COPYABLE) << Z_TYPE_FLAGS_SHIFT))
+#define IS_CONSTANT_EX (IS_CONSTANT | ((IS_TYPE_CONSTANT | IS_TYPE_REFCOUNTED | IS_TYPE_COPYABLE) << Z_TYPE_FLAGS_SHIFT))
+#define IS_CONSTANT_AST_EX (IS_CONSTANT_AST | ((IS_TYPE_CONSTANT | IS_TYPE_REFCOUNTED | IS_TYPE_COPYABLE) << Z_TYPE_FLAGS_SHIFT))
/* zval.u1.v.const_flags */
#define IS_CONSTANT_UNQUALIFIED 0x010
@@ -463,9 +472,6 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) {
#define Z_REFCOUNTED(zval) ((Z_TYPE_FLAGS(zval) & IS_TYPE_REFCOUNTED) != 0)
#define Z_REFCOUNTED_P(zval_p) Z_REFCOUNTED(*(zval_p))
-#define Z_COLLECTABLE(zval) ((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
-#define Z_COLLECTABLE_P(zval_p) Z_COLLECTABLE(*(zval_p))
-
#define Z_COPYABLE(zval) ((Z_TYPE_FLAGS(zval) & IS_TYPE_COPYABLE) != 0)
#define Z_COPYABLE_P(zval_p) Z_COPYABLE(*(zval_p))
@@ -482,9 +488,6 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) {
#define Z_OPT_REFCOUNTED(zval) ((Z_TYPE_INFO(zval) & (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT)) != 0)
#define Z_OPT_REFCOUNTED_P(zval_p) Z_OPT_REFCOUNTED(*(zval_p))
-#define Z_OPT_COLLECTABLE(zval) ((Z_TYPE_INFO(zval) & (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
-#define Z_OPT_COLLECTABLE_P(zval_p) Z_OPT_COLLECTABLE(*(zval_p))
-
#define Z_OPT_COPYABLE(zval) ((Z_TYPE_INFO(zval) & (IS_TYPE_COPYABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
#define Z_OPT_COPYABLE_P(zval_p) Z_OPT_COPYABLE(*(zval_p))
diff --git a/Zend/zend_variables.h b/Zend/zend_variables.h
index 0afe68760d..b0054eedd3 100644
--- a/Zend/zend_variables.h
+++ b/Zend/zend_variables.h
@@ -44,10 +44,11 @@ static zend_always_inline void _zval_ptr_dtor_nogc(zval *zval_ptr ZEND_FILE_LINE
static zend_always_inline void i_zval_ptr_dtor(zval *zval_ptr ZEND_FILE_LINE_DC)
{
if (Z_REFCOUNTED_P(zval_ptr)) {
- if (!Z_DELREF_P(zval_ptr)) {
- _zval_dtor_func(Z_COUNTED_P(zval_ptr) ZEND_FILE_LINE_RELAY_CC);
+ zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
+ if (!--GC_REFCOUNT(ref)) {
+ _zval_dtor_func(ref ZEND_FILE_LINE_RELAY_CC);
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(zval_ptr);
+ gc_check_possible_root(ref);
}
}
}
diff --git a/Zend/zend_virtual_cwd.c b/Zend/zend_virtual_cwd.c
index cc3f908e88..420bc54a7b 100644
--- a/Zend/zend_virtual_cwd.c
+++ b/Zend/zend_virtual_cwd.c
@@ -32,7 +32,6 @@
#include "zend.h"
#include "zend_virtual_cwd.h"
-#include "tsrm_strtok_r.h"
#ifdef ZEND_WIN32
#include <io.h>
@@ -54,10 +53,6 @@
# endif
#endif
-#ifdef NETWARE
-#include <fsio.h>
-#endif
-
#ifndef HAVE_REALPATH
#define realpath(x,y) strcpy(y,x)
#endif
@@ -66,8 +61,8 @@
#include "TSRM.h"
-/* Only need mutex for popen() in Windows and NetWare because it doesn't chdir() on UNIX */
-#if (defined(ZEND_WIN32) || defined(NETWARE)) && defined(ZTS)
+/* Only need mutex for popen() in Windows because it doesn't chdir() on UNIX */
+#if defined(ZEND_WIN32) && defined(ZTS)
MUTEX_T cwd_mutex;
#endif
@@ -85,63 +80,14 @@ cwd_state main_cwd_state; /* True global */
#include <direct.h>
#endif
-#ifdef ZEND_WIN32
-#include <tchar.h>
-#define tsrm_strtok_r(a,b,c) _tcstok((a),(b))
-#define TOKENIZER_STRING "/\\"
-
-static int php_check_dots(const char *element, int n)
-{
- while (n-- > 0) if (element[n] != '.') break;
-
- return (n != -1);
-}
-
-#define IS_DIRECTORY_UP(element, len) \
- (len >= 2 && !php_check_dots(element, len))
-
-#define IS_DIRECTORY_CURRENT(element, len) \
- (len == 1 && element[0] == '.')
-
-#elif defined(NETWARE)
-/* NetWare has strtok() (in LibC) and allows both slashes in paths, like Windows --
- but rest of the stuff is like Unix */
-/* strtok() call in LibC is abending when used in a different address space -- hence using
- PHP's version itself for now */
-/*#define tsrm_strtok_r(a,b,c) strtok((a),(b))*/
-#define TOKENIZER_STRING "/\\"
-
-#else
-#define TOKENIZER_STRING "/"
-#endif
-
-/* default macros */
-
-#ifndef IS_DIRECTORY_UP
-#define IS_DIRECTORY_UP(element, len) \
- (len == 2 && element[0] == '.' && element[1] == '.')
-#endif
-
-#ifndef IS_DIRECTORY_CURRENT
-#define IS_DIRECTORY_CURRENT(element, len) \
- (len == 1 && element[0] == '.')
-#endif
-
-/* define this to check semantics */
-#define IS_DIR_OK(s) (1)
-
-#ifndef IS_DIR_OK
-#define IS_DIR_OK(state) (php_is_dir_ok(state) == 0)
-#endif
-
-
#define CWD_STATE_COPY(d, s) \
(d)->cwd_length = (s)->cwd_length; \
(d)->cwd = (char *) emalloc((s)->cwd_length+1); \
memcpy((d)->cwd, (s)->cwd, (s)->cwd_length+1);
#define CWD_STATE_FREE(s) \
- efree((s)->cwd);
+ efree((s)->cwd); \
+ (s)->cwd_length = 0;
#ifdef ZEND_WIN32
# define CWD_STATE_FREE_ERR(state) do { \
@@ -299,8 +245,8 @@ CWD_API int php_sys_stat_ex(const char *path, zend_stat_t *buf, int lstat) /* {{
WIN32_FILE_ATTRIBUTE_DATA data;
LARGE_INTEGER t;
const size_t path_len = strlen(path);
- wchar_t *pathw = php_win32_ioutil_any_to_w(path);
ALLOCA_FLAG(use_heap_large)
+ wchar_t *pathw = php_win32_ioutil_any_to_w(path);
if (!pathw) {
return -1;
@@ -457,23 +403,12 @@ CWD_API void virtual_cwd_startup(void) /* {{{ */
char cwd[MAXPATHLEN];
char *result;
-#ifdef NETWARE
- result = getcwdpath(cwd, NULL, 1);
- if(result)
- {
- char *c=cwd;
- while(c = strchr(c, '\\'))
- {
- *c='/';
- ++c;
- }
- }
-#else
+
#ifdef ZEND_WIN32
ZeroMemory(&cwd, sizeof(cwd));
#endif
result = getcwd(cwd, sizeof(cwd));
-#endif
+
if (!result) {
cwd[0] = '\0';
}
@@ -492,7 +427,7 @@ CWD_API void virtual_cwd_startup(void) /* {{{ */
cwd_globals_ctor(&cwd_globals);
#endif
-#if (defined(ZEND_WIN32) || defined(NETWARE)) && defined(ZTS)
+#if (defined(ZEND_WIN32)) && defined(ZTS)
cwd_mutex = tsrm_mutex_alloc();
#endif
}
@@ -503,7 +438,7 @@ CWD_API void virtual_cwd_shutdown(void) /* {{{ */
#ifndef ZTS
cwd_globals_dtor(&cwd_globals);
#endif
-#if (defined(ZEND_WIN32) || defined(NETWARE)) && defined(ZTS)
+#if (defined(ZEND_WIN32)) && defined(ZTS)
tsrm_mutex_free(cwd_mutex);
#endif
@@ -713,7 +648,7 @@ static inline void realpath_cache_add(const char *path, int path_len, const char
memcpy(bucket->realpath, realpath, realpath_len+1);
}
bucket->realpath_len = realpath_len;
- bucket->is_dir = is_dir;
+ bucket->is_dir = is_dir > 0;
#ifdef ZEND_WIN32
bucket->is_rvalid = 0;
bucket->is_readable = 0;
@@ -1104,11 +1039,6 @@ static int tsrm_realpath_r(char *path, int start, int len, int *ll, time_t *t, i
return -1;
}
}
-
-#elif defined(NETWARE)
- save = 0;
- tmp = do_alloca(len+1, use_heap);
- memcpy(tmp, path, len+1);
#else
if (save && php_sys_lstat(path, &st) < 0) {
if (use_realpath == CWD_REALPATH) {
@@ -1346,18 +1276,6 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func
resolved_path[2] = DEFAULT_SLASH;
start = 3;
}
-#elif defined(NETWARE)
- if (IS_ABSOLUTE_PATH(resolved_path, path_length)) {
- /* skip VOLUME name */
- start = 0;
- while (start != ':') {
- if (resolved_path[start] == 0) return -1;
- start++;
- }
- start++;
- if (!IS_SLASH(resolved_path[start])) return -1;
- resolved_path[start++] = DEFAULT_SLASH;
- }
#endif
add_slash = (use_realpath != CWD_REALPATH) && path_length > 0 && IS_SLASH(resolved_path[path_length-1]);
@@ -1645,7 +1563,7 @@ CWD_API int virtual_chmod(const char *filename, mode_t mode) /* {{{ */
}
/* }}} */
-#if !defined(ZEND_WIN32) && !defined(NETWARE)
+#if !defined(ZEND_WIN32)
CWD_API int virtual_chown(const char *filename, uid_t owner, gid_t group, int link) /* {{{ */
{
cwd_state new_state;
@@ -1892,36 +1810,6 @@ CWD_API FILE *virtual_popen(const char *command, const char *type) /* {{{ */
return popen_ex(command, type, CWDG(cwd).cwd, NULL);
}
/* }}} */
-#elif defined(NETWARE)
-/* On NetWare, the trick of prepending "cd cwd; " doesn't work so we need to perform
- a VCWD_CHDIR() and mutex it
- */
-CWD_API FILE *virtual_popen(const char *command, const char *type) /* {{{ */
-{
- char prev_cwd[MAXPATHLEN];
- char *getcwd_result;
- FILE *retval;
-
- getcwd_result = VCWD_GETCWD(prev_cwd, MAXPATHLEN);
- if (!getcwd_result) {
- return NULL;
- }
-
-#ifdef ZTS
- tsrm_mutex_lock(cwd_mutex);
-#endif
-
- VCWD_CHDIR(CWDG(cwd).cwd);
- retval = popen(command, type);
- VCWD_CHDIR(prev_cwd);
-
-#ifdef ZTS
- tsrm_mutex_unlock(cwd_mutex);
-#endif
-
- return retval;
-}
-/* }}} */
#else /* Unix */
CWD_API FILE *virtual_popen(const char *command, const char *type) /* {{{ */
{
diff --git a/Zend/zend_virtual_cwd.h b/Zend/zend_virtual_cwd.h
index 033f7d6ad0..538a2f8a73 100644
--- a/Zend/zend_virtual_cwd.h
+++ b/Zend/zend_virtual_cwd.h
@@ -73,19 +73,6 @@ typedef unsigned short mode_t;
#define IS_ABSOLUTE_PATH(path, len) \
(len >= 2 && (/* is local */isalpha(path[0]) && path[1] == ':' || /* is UNC */IS_SLASH(path[0]) && IS_SLASH(path[1])))
-#elif defined(NETWARE)
-#ifdef HAVE_DIRENT_H
-#include <dirent.h>
-#endif
-
-#define DEFAULT_SLASH '/'
-#define DEFAULT_DIR_SEPARATOR ';'
-#define IS_SLASH(c) ((c) == '/' || (c) == '\\')
-#define IS_SLASH_P(c) IS_SLASH(*(c))
-/* Colon indicates volume name, either first character should be forward slash or backward slash */
-#define IS_ABSOLUTE_PATH(path, len) \
- ((strchr(path, ':') != NULL) || ((len >= 1) && ((path[0] == '/') || (path[0] == '\\'))))
-
#else
#ifdef HAVE_DIRENT_H
#include <dirent.h>
@@ -193,7 +180,7 @@ CWD_API int virtual_access(const char *pathname, int mode);
CWD_API int virtual_utime(const char *filename, struct utimbuf *buf);
#endif
CWD_API int virtual_chmod(const char *filename, mode_t mode);
-#if !defined(ZEND_WIN32) && !defined(NETWARE)
+#if !defined(ZEND_WIN32)
CWD_API int virtual_chown(const char *filename, uid_t owner, gid_t group, int link);
#endif
@@ -217,14 +204,14 @@ typedef struct _realpath_cache_bucket {
char *realpath;
struct _realpath_cache_bucket *next;
time_t expires;
- int path_len;
- int realpath_len;
- int is_dir;
+ uint16_t path_len;
+ uint16_t realpath_len;
+ uint8_t is_dir:1;
#ifdef ZEND_WIN32
- unsigned char is_rvalid;
- unsigned char is_readable;
- unsigned char is_wvalid;
- unsigned char is_writable;
+ uint8_t is_rvalid:1;
+ uint8_t is_readable:1;
+ uint8_t is_wvalid:1;
+ uint8_t is_writable:1;
#endif
} realpath_cache_bucket;
@@ -281,7 +268,7 @@ CWD_API realpath_cache_bucket** realpath_cache_get_buckets(void);
#define VCWD_UTIME(path, time) virtual_utime(path, time)
#endif
#define VCWD_CHMOD(path, mode) virtual_chmod(path, mode)
-#if !defined(ZEND_WIN32) && !defined(NETWARE)
+#if !defined(ZEND_WIN32)
#define VCWD_CHOWN(path, owner, group) virtual_chown(path, owner, group, 0)
#if HAVE_LCHOWN
#define VCWD_LCHOWN(path, owner, group) virtual_chown(path, owner, group, 1)
@@ -336,7 +323,7 @@ CWD_API realpath_cache_bucket** realpath_cache_get_buckets(void);
# endif
#endif
-#if !defined(ZEND_WIN32) && !defined(NETWARE)
+#if !defined(ZEND_WIN32)
#define VCWD_CHOWN(path, owner, group) chown(path, owner, group)
#if HAVE_LCHOWN
#define VCWD_LCHOWN(path, owner, group) lchown(path, owner, group)
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 6e82ddba8f..8c94319570 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -3508,12 +3508,12 @@ ZEND_VM_HANDLER(118, ZEND_INIT_USER_CALL, CONST, CONST|TMPVAR|CV, NUM)
}
if (func->common.fn_flags & ZEND_ACC_CLOSURE) {
/* Delay closure destruction until its invocation */
- if (OP2_TYPE & (IS_VAR|IS_CV)) {
- ZVAL_DEREF(function_name);
- }
ZEND_ASSERT(GC_TYPE((zend_object*)func->common.prototype) == IS_OBJECT);
GC_REFCOUNT((zend_object*)func->common.prototype)++;
call_info |= ZEND_CALL_CLOSURE;
+ if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
+ call_info |= ZEND_CALL_FAKE_CLOSURE;
+ }
} else if (object) {
call_info |= ZEND_CALL_RELEASE_THIS;
GC_REFCOUNT(object)++; /* For $this pointer */
@@ -3649,7 +3649,7 @@ ZEND_VM_HANDLER(129, ZEND_DO_ICALL, ANY, ANY, SPEC(RETVAL))
ZEND_ASSERT(!Z_ISREF_P(ret));
#endif
- EG(current_execute_data) = call->prev_execute_data;
+ EG(current_execute_data) = execute_data;
zend_vm_stack_free_args(call);
zend_vm_stack_free_call_frame(call);
@@ -3750,7 +3750,7 @@ ZEND_VM_HANDLER(131, ZEND_DO_FCALL_BY_NAME, ANY, ANY, SPEC(RETVAL))
}
#endif
- EG(current_execute_data) = call->prev_execute_data;
+ EG(current_execute_data) = execute_data;
zend_vm_stack_free_args(call);
zend_vm_stack_free_call_frame(call);
@@ -3847,7 +3847,7 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, ANY, ANY, SPEC(RETVAL))
}
#endif
- EG(current_execute_data) = call->prev_execute_data;
+ EG(current_execute_data) = execute_data;
zend_vm_stack_free_args(call);
if (!RETURN_VALUE_USED(opline)) {
@@ -3861,7 +3861,7 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, ANY, ANY, SPEC(RETVAL))
call->prev_execute_data = execute_data;
- if (UNEXPECTED(!zend_do_fcall_overloaded(fbc, call, ret))) {
+ if (UNEXPECTED(!zend_do_fcall_overloaded(call, ret))) {
HANDLE_EXCEPTION();
}
@@ -5356,20 +5356,6 @@ ZEND_VM_HANDLER(21, ZEND_CAST, CONST|TMP|VAR|CV, ANY, TYPE)
switch (opline->extended_value) {
case IS_NULL:
- /* This code is taken from convert_to_null. However, it does not seems very useful,
- * because a conversion to null always results in the same value. This could only
- * be relevant if a cast_object handler for IS_NULL has some kind of side-effect. */
-#if 0
- if (OP1_TYPE == IS_VAR || OP1_TYPE == IS_CV) {
- ZVAL_DEREF(expr);
- }
- if (Z_TYPE_P(expr) == IS_OBJECT && Z_OBJ_HT_P(expr)->cast_object) {
- if (Z_OBJ_HT_P(expr)->cast_object(expr, result, IS_NULL) == SUCCESS) {
- break;
- }
- }
-#endif
-
ZVAL_NULL(result);
break;
case _IS_BOOL:
@@ -5520,18 +5506,11 @@ ZEND_VM_HANDLER(74, ZEND_UNSET_VAR, CONST|TMPVAR|CV, UNUSED, VAR_FETCH|ISSET)
if (Z_REFCOUNTED_P(var)) {
zend_refcounted *garbage = Z_COUNTED_P(var);
+ ZVAL_UNDEF(var);
if (!--GC_REFCOUNT(garbage)) {
- ZVAL_UNDEF(var);
zval_dtor_func(garbage);
} else {
- zval *z = var;
- ZVAL_DEREF(z);
- if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
- ZVAL_UNDEF(var);
- gc_possible_root(Z_COUNTED_P(z));
- } else {
- ZVAL_UNDEF(var);
- }
+ gc_check_possible_root(garbage);
}
} else {
ZVAL_UNDEF(var);
@@ -5793,11 +5772,11 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET_R, CONST|TMP|VAR|CV, JMP_ADDR)
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS))) {
+ if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+ (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
+ (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
+ ) {
break;
}
pos++;
@@ -5948,11 +5927,11 @@ ZEND_VM_HANDLER(125, ZEND_FE_RESET_RW, CONST|TMP|VAR|CV, JMP_ADDR)
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS))) {
+ if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+ (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
+ (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
+ ) {
break;
}
pos++;
@@ -6109,13 +6088,13 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH_R, VAR, ANY, JMP_ADDR)
p++;
continue;
}
+ if (UNEXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == FAILURE)) {
+ pos++;
+ p++;
+ continue;
+ }
}
- if (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
- break;
- }
- pos++;
- p++;
+ break;
}
if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
if (UNEXPECTED(!p->key)) {
@@ -6137,11 +6116,11 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH_R, VAR, ANY, JMP_ADDR)
break;
}
p++;
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS))) {
+ if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+ (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
+ (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)))
+ ) {
break;
}
}
@@ -7748,18 +7727,19 @@ ZEND_VM_C_LABEL(check_indirect):
variable_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_W);
if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr))) {
- uint32_t refcnt = Z_DELREF_P(variable_ptr);
+ zend_refcounted *ref = Z_COUNTED_P(variable_ptr);
+ uint32_t refcnt = --GC_REFCOUNT(ref);
if (EXPECTED(variable_ptr != value)) {
if (refcnt == 0) {
SAVE_OPLINE();
- zval_dtor_func(Z_COUNTED_P(variable_ptr));
+ zval_dtor_func(ref);
if (UNEXPECTED(EG(exception))) {
ZVAL_NULL(variable_ptr);
HANDLE_EXCEPTION();
}
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(variable_ptr);
+ gc_check_possible_root(ref);
}
}
}
@@ -7822,14 +7802,7 @@ ZEND_VM_HANDLER(123, ZEND_TYPE_CHECK, CONST|TMP|VAR|CV, ANY, TYPE)
SAVE_OPLINE();
value = GET_OP1_ZVAL_PTR_DEREF(BP_VAR_R);
if (EXPECTED(Z_TYPE_P(value) == opline->extended_value)) {
- if (OP1_TYPE != IS_CONST && UNEXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
- zend_class_entry *ce = Z_OBJCE_P(value);
-
- if (EXPECTED(ZSTR_LEN(ce->name) != sizeof("__PHP_Incomplete_Class") - 1) ||
- EXPECTED(memcmp(ZSTR_VAL(ce->name), "__PHP_Incomplete_Class", sizeof("__PHP_Incomplete_Class") - 1) != 0)) {
- result = 1;
- }
- } else if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
+ if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(value));
if (EXPECTED(type_name != NULL)) {
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index fc1b7f571d..338d194279 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -635,7 +635,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HA
ZEND_ASSERT(!Z_ISREF_P(ret));
#endif
- EG(current_execute_data) = call->prev_execute_data;
+ EG(current_execute_data) = execute_data;
zend_vm_stack_free_args(call);
zend_vm_stack_free_call_frame(call);
@@ -682,7 +682,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_ICALL_SPEC_RETVAL_USED_HAND
ZEND_ASSERT(!Z_ISREF_P(ret));
#endif
- EG(current_execute_data) = call->prev_execute_data;
+ EG(current_execute_data) = execute_data;
zend_vm_stack_free_args(call);
zend_vm_stack_free_call_frame(call);
@@ -805,7 +805,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_U
}
#endif
- EG(current_execute_data) = call->prev_execute_data;
+ EG(current_execute_data) = execute_data;
zend_vm_stack_free_args(call);
zend_vm_stack_free_call_frame(call);
@@ -884,7 +884,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_U
}
#endif
- EG(current_execute_data) = call->prev_execute_data;
+ EG(current_execute_data) = execute_data;
zend_vm_stack_free_args(call);
zend_vm_stack_free_call_frame(call);
@@ -981,7 +981,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HA
}
#endif
- EG(current_execute_data) = call->prev_execute_data;
+ EG(current_execute_data) = execute_data;
zend_vm_stack_free_args(call);
if (!0) {
@@ -995,7 +995,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HA
call->prev_execute_data = execute_data;
- if (UNEXPECTED(!zend_do_fcall_overloaded(fbc, call, ret))) {
+ if (UNEXPECTED(!zend_do_fcall_overloaded(call, ret))) {
HANDLE_EXCEPTION();
}
@@ -1108,7 +1108,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_USED_HAND
}
#endif
- EG(current_execute_data) = call->prev_execute_data;
+ EG(current_execute_data) = execute_data;
zend_vm_stack_free_args(call);
if (!1) {
@@ -1122,7 +1122,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_USED_HAND
call->prev_execute_data = execute_data;
- if (UNEXPECTED(!zend_do_fcall_overloaded(fbc, call, ret))) {
+ if (UNEXPECTED(!zend_do_fcall_overloaded(call, ret))) {
HANDLE_EXCEPTION();
}
@@ -3347,20 +3347,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CAST_SPEC_CONST_HANDLER(ZEND_O
switch (opline->extended_value) {
case IS_NULL:
- /* This code is taken from convert_to_null. However, it does not seems very useful,
- * because a conversion to null always results in the same value. This could only
- * be relevant if a cast_object handler for IS_NULL has some kind of side-effect. */
-#if 0
- if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
- ZVAL_DEREF(expr);
- }
- if (Z_TYPE_P(expr) == IS_OBJECT && Z_OBJ_HT_P(expr)->cast_object) {
- if (Z_OBJ_HT_P(expr)->cast_object(expr, result, IS_NULL) == SUCCESS) {
- break;
- }
- }
-#endif
-
ZVAL_NULL(result);
break;
case _IS_BOOL:
@@ -3539,11 +3525,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_CONST_HANDLER(
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS))) {
+ if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+ (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
+ (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
+ ) {
break;
}
pos++;
@@ -3691,11 +3677,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_CONST_HANDLER
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS))) {
+ if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+ (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
+ (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
+ ) {
break;
}
pos++;
@@ -4074,14 +4060,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_CONST_HANDLER(
SAVE_OPLINE();
value = EX_CONSTANT(opline->op1);
if (EXPECTED(Z_TYPE_P(value) == opline->extended_value)) {
- if (IS_CONST != IS_CONST && UNEXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
- zend_class_entry *ce = Z_OBJCE_P(value);
-
- if (EXPECTED(ZSTR_LEN(ce->name) != sizeof("__PHP_Incomplete_Class") - 1) ||
- EXPECTED(memcmp(ZSTR_VAL(ce->name), "__PHP_Incomplete_Class", sizeof("__PHP_Incomplete_Class") - 1) != 0)) {
- result = 1;
- }
- } else if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
+ if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(value));
if (EXPECTED(type_name != NULL)) {
@@ -5638,12 +5617,12 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_CONS
}
if (func->common.fn_flags & ZEND_ACC_CLOSURE) {
/* Delay closure destruction until its invocation */
- if (IS_CONST & (IS_VAR|IS_CV)) {
- ZVAL_DEREF(function_name);
- }
ZEND_ASSERT(GC_TYPE((zend_object*)func->common.prototype) == IS_OBJECT);
GC_REFCOUNT((zend_object*)func->common.prototype)++;
call_info |= ZEND_CALL_CLOSURE;
+ if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
+ call_info |= ZEND_CALL_FAKE_CLOSURE;
+ }
} else if (object) {
call_info |= ZEND_CALL_RELEASE_THIS;
GC_REFCOUNT(object)++; /* For $this pointer */
@@ -7791,18 +7770,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HA
if (Z_REFCOUNTED_P(var)) {
zend_refcounted *garbage = Z_COUNTED_P(var);
+ ZVAL_UNDEF(var);
if (!--GC_REFCOUNT(garbage)) {
- ZVAL_UNDEF(var);
zval_dtor_func(garbage);
} else {
- zval *z = var;
- ZVAL_DEREF(z);
- if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
- ZVAL_UNDEF(var);
- gc_possible_root(Z_COUNTED_P(z));
- } else {
- ZVAL_UNDEF(var);
- }
+ gc_check_possible_root(garbage);
}
} else {
ZVAL_UNDEF(var);
@@ -9553,12 +9525,12 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_CV_H
}
if (func->common.fn_flags & ZEND_ACC_CLOSURE) {
/* Delay closure destruction until its invocation */
- if (IS_CV & (IS_VAR|IS_CV)) {
- ZVAL_DEREF(function_name);
- }
ZEND_ASSERT(GC_TYPE((zend_object*)func->common.prototype) == IS_OBJECT);
GC_REFCOUNT((zend_object*)func->common.prototype)++;
call_info |= ZEND_CALL_CLOSURE;
+ if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
+ call_info |= ZEND_CALL_FAKE_CLOSURE;
+ }
} else if (object) {
call_info |= ZEND_CALL_RELEASE_THIS;
GC_REFCOUNT(object)++; /* For $this pointer */
@@ -11532,12 +11504,12 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_TMPV
}
if (func->common.fn_flags & ZEND_ACC_CLOSURE) {
/* Delay closure destruction until its invocation */
- if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) {
- ZVAL_DEREF(function_name);
- }
ZEND_ASSERT(GC_TYPE((zend_object*)func->common.prototype) == IS_OBJECT);
GC_REFCOUNT((zend_object*)func->common.prototype)++;
call_info |= ZEND_CALL_CLOSURE;
+ if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
+ call_info |= ZEND_CALL_FAKE_CLOSURE;
+ }
} else if (object) {
call_info |= ZEND_CALL_RELEASE_THIS;
GC_REFCOUNT(object)++; /* For $this pointer */
@@ -12747,20 +12719,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CAST_SPEC_TMP_HANDLER(ZEND_OPC
switch (opline->extended_value) {
case IS_NULL:
- /* This code is taken from convert_to_null. However, it does not seems very useful,
- * because a conversion to null always results in the same value. This could only
- * be relevant if a cast_object handler for IS_NULL has some kind of side-effect. */
-#if 0
- if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
- ZVAL_DEREF(expr);
- }
- if (Z_TYPE_P(expr) == IS_OBJECT && Z_OBJ_HT_P(expr)->cast_object) {
- if (Z_OBJ_HT_P(expr)->cast_object(expr, result, IS_NULL) == SUCCESS) {
- break;
- }
- }
-#endif
-
ZVAL_NULL(result);
break;
case _IS_BOOL:
@@ -12875,11 +12833,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_TMP_HANDLER(ZE
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS))) {
+ if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+ (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
+ (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
+ ) {
break;
}
pos++;
@@ -13028,11 +12986,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_TMP_HANDLER(Z
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS))) {
+ if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+ (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
+ (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
+ ) {
break;
}
pos++;
@@ -13352,14 +13310,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_TMP_HANDLER(ZE
SAVE_OPLINE();
value = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1);
if (EXPECTED(Z_TYPE_P(value) == opline->extended_value)) {
- if (IS_TMP_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
- zend_class_entry *ce = Z_OBJCE_P(value);
-
- if (EXPECTED(ZSTR_LEN(ce->name) != sizeof("__PHP_Incomplete_Class") - 1) ||
- EXPECTED(memcmp(ZSTR_VAL(ce->name), "__PHP_Incomplete_Class", sizeof("__PHP_Incomplete_Class") - 1) != 0)) {
- result = 1;
- }
- } else if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
+ if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(value));
if (EXPECTED(type_name != NULL)) {
@@ -16327,20 +16278,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CAST_SPEC_VAR_HANDLER(ZEND_OPC
switch (opline->extended_value) {
case IS_NULL:
- /* This code is taken from convert_to_null. However, it does not seems very useful,
- * because a conversion to null always results in the same value. This could only
- * be relevant if a cast_object handler for IS_NULL has some kind of side-effect. */
-#if 0
- if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
- ZVAL_DEREF(expr);
- }
- if (Z_TYPE_P(expr) == IS_OBJECT && Z_OBJ_HT_P(expr)->cast_object) {
- if (Z_OBJ_HT_P(expr)->cast_object(expr, result, IS_NULL) == SUCCESS) {
- break;
- }
- }
-#endif
-
ZVAL_NULL(result);
break;
case _IS_BOOL:
@@ -16457,11 +16394,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_VAR_HANDLER(ZE
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS))) {
+ if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+ (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
+ (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
+ ) {
break;
}
pos++;
@@ -16612,11 +16549,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_VAR_HANDLER(Z
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS))) {
+ if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+ (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
+ (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
+ ) {
break;
}
pos++;
@@ -16773,13 +16710,13 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FETCH_R_SPEC_VAR_HANDLER(ZE
p++;
continue;
}
+ if (UNEXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == FAILURE)) {
+ pos++;
+ p++;
+ continue;
+ }
}
- if (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
- break;
- }
- pos++;
- p++;
+ break;
}
if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
if (UNEXPECTED(!p->key)) {
@@ -16801,11 +16738,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FETCH_R_SPEC_VAR_HANDLER(ZE
break;
}
p++;
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS))) {
+ if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+ (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
+ (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)))
+ ) {
break;
}
}
@@ -17299,14 +17236,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_VAR_HANDLER(ZE
SAVE_OPLINE();
value = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1);
if (EXPECTED(Z_TYPE_P(value) == opline->extended_value)) {
- if (IS_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
- zend_class_entry *ce = Z_OBJCE_P(value);
-
- if (EXPECTED(ZSTR_LEN(ce->name) != sizeof("__PHP_Incomplete_Class") - 1) ||
- EXPECTED(memcmp(ZSTR_VAL(ce->name), "__PHP_Incomplete_Class", sizeof("__PHP_Incomplete_Class") - 1) != 0)) {
- result = 1;
- }
- } else if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
+ if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(value));
if (EXPECTED(type_name != NULL)) {
@@ -35349,20 +35279,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CAST_SPEC_CV_HANDLER(ZEND_OPCO
switch (opline->extended_value) {
case IS_NULL:
- /* This code is taken from convert_to_null. However, it does not seems very useful,
- * because a conversion to null always results in the same value. This could only
- * be relevant if a cast_object handler for IS_NULL has some kind of side-effect. */
-#if 0
- if (IS_CV == IS_VAR || IS_CV == IS_CV) {
- ZVAL_DEREF(expr);
- }
- if (Z_TYPE_P(expr) == IS_OBJECT && Z_OBJ_HT_P(expr)->cast_object) {
- if (Z_OBJ_HT_P(expr)->cast_object(expr, result, IS_NULL) == SUCCESS) {
- break;
- }
- }
-#endif
-
ZVAL_NULL(result);
break;
case _IS_BOOL:
@@ -35541,11 +35457,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_CV_HANDLER(ZEN
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS))) {
+ if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+ (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
+ (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
+ ) {
break;
}
pos++;
@@ -35693,11 +35609,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_CV_HANDLER(ZE
Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS))) {
+ if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+ (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
+ (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
+ ) {
break;
}
pos++;
@@ -36076,14 +35992,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_CV_HANDLER(ZEN
SAVE_OPLINE();
value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var);
if (EXPECTED(Z_TYPE_P(value) == opline->extended_value)) {
- if (IS_CV != IS_CONST && UNEXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
- zend_class_entry *ce = Z_OBJCE_P(value);
-
- if (EXPECTED(ZSTR_LEN(ce->name) != sizeof("__PHP_Incomplete_Class") - 1) ||
- EXPECTED(memcmp(ZSTR_VAL(ce->name), "__PHP_Incomplete_Class", sizeof("__PHP_Incomplete_Class") - 1) != 0)) {
- result = 1;
- }
- } else if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
+ if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(value));
if (EXPECTED(type_name != NULL)) {
@@ -40570,18 +40479,19 @@ check_indirect:
variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(execute_data, opline->op1.var);
if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr))) {
- uint32_t refcnt = Z_DELREF_P(variable_ptr);
+ zend_refcounted *ref = Z_COUNTED_P(variable_ptr);
+ uint32_t refcnt = --GC_REFCOUNT(ref);
if (EXPECTED(variable_ptr != value)) {
if (refcnt == 0) {
SAVE_OPLINE();
- zval_dtor_func(Z_COUNTED_P(variable_ptr));
+ zval_dtor_func(ref);
if (UNEXPECTED(EG(exception))) {
ZVAL_NULL(variable_ptr);
HANDLE_EXCEPTION();
}
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(variable_ptr);
+ gc_check_possible_root(ref);
}
}
}
@@ -42774,18 +42684,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDL
if (Z_REFCOUNTED_P(var)) {
zend_refcounted *garbage = Z_COUNTED_P(var);
+ ZVAL_UNDEF(var);
if (!--GC_REFCOUNT(garbage)) {
- ZVAL_UNDEF(var);
zval_dtor_func(garbage);
} else {
- zval *z = var;
- ZVAL_DEREF(z);
- if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
- ZVAL_UNDEF(var);
- gc_possible_root(Z_COUNTED_P(z));
- } else {
- ZVAL_UNDEF(var);
- }
+ gc_check_possible_root(garbage);
}
} else {
ZVAL_UNDEF(var);
@@ -53948,18 +53851,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_H
if (Z_REFCOUNTED_P(var)) {
zend_refcounted *garbage = Z_COUNTED_P(var);
+ ZVAL_UNDEF(var);
if (!--GC_REFCOUNT(garbage)) {
- ZVAL_UNDEF(var);
zval_dtor_func(garbage);
} else {
- zval *z = var;
- ZVAL_DEREF(z);
- if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
- ZVAL_UNDEF(var);
- gc_possible_root(Z_COUNTED_P(z));
- } else {
- ZVAL_UNDEF(var);
- }
+ gc_check_possible_root(garbage);
}
} else {
ZVAL_UNDEF(var);