From: Dmitry Stogov Date: Mon, 17 Feb 2014 21:41:23 +0000 (+0400) Subject: Use better data structures (incomplete) X-Git-Tag: POST_PHPNG_MERGE~412^2~633 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a0fe8e5a91024710372625555b7d84dc9726e2da;p=php Use better data structures (incomplete) --- diff --git a/Zend/zend_API.c b/Zend/zend_API.c index cb539b0f4c..84a29559a4 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -763,7 +763,7 @@ static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, int arg_count; int quiet = flags & ZEND_PARSE_PARAMS_QUIET; zend_bool have_varargs = 0; - zval ***varargs = NULL; + zval **varargs = NULL; int *n_varargs = NULL; for (spec_walk = type_spec; *spec_walk; spec_walk++) { @@ -869,7 +869,7 @@ static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, int num_varargs = num_args + 1 - post_varargs; /* eat up the passed in storage even if it won't be filled in with varargs */ - varargs = va_arg(*va, zval ***); + varargs = va_arg(*va, zval **); n_varargs = va_arg(*va, int *); type_spec++; @@ -880,9 +880,11 @@ static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, *n_varargs = num_varargs; /* allocate space for array and store args */ - *varargs = safe_emalloc(num_varargs, sizeof(zval *), 0); + *varargs = (zval*)safe_emalloc(num_varargs, sizeof(zval), 0); while (num_varargs-- > 0) { - (*varargs)[iv++] = p++; + ZVAL_COPY_VALUE(&(*varargs)[iv], p); + iv++; + p++; } /* adjust how many args we have left and restart loop */ diff --git a/Zend/zend_API.h b/Zend/zend_API.h index 2ff7e69437..2db0c2d44e 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -545,16 +545,12 @@ END_EXTERN_C() #define CHECK_NULL_PATH(p, l) (strlen(p) != l) #define ZVAL_STRINGL(z, s, l) do { \ - zval *_z = (z); \ - int __l = l; \ - ZVAL_STR(_z, STR_ALLOC(__l, 0)); \ - memcpy(Z_STRVAL_P(_z), (s), __l + 1); \ + ZVAL_STR(z, STR_INIT(s, l, 0)); \ } while (0) #define ZVAL_STRING(z, s) do { \ const char *_s = (s); \ - int _l = strlen(_s); \ - ZVAL_STRINGL(z, _s, _l); \ + ZVAL_STRINGL(z, _s, strlen(_s)); \ } while (0) #define ZVAL_EMPTY_STRING(z) do { \ @@ -562,16 +558,12 @@ END_EXTERN_C() } while (0) #define ZVAL_PSTRINGL(z, s, l) do { \ - zval *_z = (z); \ - int __l = l; \ - ZVAL_STR(_z, STR_ALLOC(__l, 1)); \ - memcpy(Z_STRVAL_P(_z), (s), __l + 1); \ + ZVAL_STR(z, STR_INIT(s, l, 1)); \ } while (0) #define ZVAL_PSTRING(z, s) do { \ const char *_s = (s); \ - int _l = strlen(_s); \ - ZVAL_PSTRINGL(z, _s, _l); \ + ZVAL_PSTRINGL(z, _s, strlen(_s)); \ } while (0) #define ZVAL_EMPTY_PSTRING(z) do { \ diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 58d4cc1e50..bc1fd172d5 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -168,6 +168,7 @@ static void build_runtime_defined_function_key(zval *result, const char *name, i ZVAL_STR(result, STR_ALLOC(1+name_length+strlen(filename)+char_pos_len, 0)); /* must be binary safe */ + Z_STRVAL_P(result)[0] = '\0'; sprintf(Z_STRVAL_P(result)+1, "%s%s%s", name, filename, char_pos_buf); } /* }}} */ @@ -298,7 +299,8 @@ ZEND_API zend_bool zend_is_compiling(TSRMLS_D) /* {{{ */ static zend_uint get_temporary_variable(zend_op_array *op_array) /* {{{ */ { - return (zend_uint)(zend_uintptr_t)EX_VAR_NUM_2(0, (op_array->T)++); +//??? return (zend_uint)(zend_uintptr_t)EX_VAR_NUM_2(0, (op_array->T)++); + return (zend_uint)op_array->T++; } /* }}} */ @@ -340,11 +342,11 @@ void zend_del_literal(zend_op_array *op_array, int n) /* {{{ */ /* }}} */ /* Common part of zend_add_literal and zend_append_individual_literal */ -static inline void zend_insert_literal(zend_op_array *op_array, const zval *zv, int literal_position TSRMLS_DC) /* {{{ */ +static inline void zend_insert_literal(zend_op_array *op_array, zval *zv, int literal_position TSRMLS_DC) /* {{{ */ { if (Z_TYPE_P(zv) == IS_STRING || Z_TYPE_P(zv) == IS_CONSTANT) { STR_HASH_VAL(Z_STR_P(zv)); - zend_new_interned_string(Z_STR_P(zv) TSRMLS_CC); + Z_STR_P(zv) = zend_new_interned_string(Z_STR_P(zv) TSRMLS_CC); } ZVAL_COPY_VALUE(&CONSTANT_EX(op_array, literal_position), zv); //??? Z_SET_REFCOUNT(CONSTANT_EX(op_array, literal_position), 2); @@ -1715,7 +1717,7 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n char *tmp = zend_str_tolower_dup(Z_STRVAL_P(ns_name), Z_STRLEN_P(ns_name)); if (Z_STRLEN_P(ns_name) != Z_STRLEN(function_name->u.constant) || - memcmp(tmp, lcname, Z_STRLEN(function_name->u.constant))) { + memcmp(tmp, lcname->val, Z_STRLEN(function_name->u.constant))) { zend_error(E_COMPILE_ERROR, "Cannot declare function %s because the name is already in use", Z_STRVAL(function_name->u.constant)); } efree(tmp); diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 8af44237bf..563be71629 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -396,7 +396,7 @@ struct _zend_execute_data { #define EX(element) execute_data.element #define EX_VAR_2(ex, n) ((zval*)(((char*)(ex)) + ((int)(n)))) -#define EX_VAR_NUM_2(ex, n) (EX_VAR_2(ex, 0) - (1 + (n))) +#define EX_VAR_NUM_2(ex, n) (((zval*)(((char*)(ex))+ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data))))+(n)) #define EX_VAR(n) EX_VAR_2(execute_data, n) #define EX_VAR_NUM(n) EX_VAR_NUM_2(execute_data, n) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 08df347770..68b6bef360 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -212,7 +212,7 @@ static zend_never_inline zval *_get_zval_cv_lookup(zend_uint var, int type TSRML zend_error(E_NOTICE, "Undefined variable: %s", cv->val); /* break missing intentionally */ case BP_VAR_W: - ret = EX_VAR_2(EG(current_execute_data), var); + ret = EX_VAR_NUM_2(EG(current_execute_data), var); ZVAL_NULL(ret); if (EG(active_symbol_table)) { ret = zend_hash_update(EG(active_symbol_table), cv, ret); @@ -267,7 +267,7 @@ static zend_never_inline zval *_get_zval_cv_lookup_BP_VAR_RW(zend_uint var TSRML zval *ret; if (!EG(active_symbol_table)) { - ret = EX_VAR_2(EG(current_execute_data), var); + ret = EX_VAR_NUM_2(EG(current_execute_data), var); ZVAL_NULL(ret); zend_error(E_NOTICE, "Undefined variable: %s", cv->val); } else if ((ret = zend_hash_find(EG(active_symbol_table), cv)) == NULL) { @@ -283,7 +283,7 @@ static zend_never_inline zval *_get_zval_cv_lookup_BP_VAR_W(zend_uint var TSRMLS zval *ret; if (!EG(active_symbol_table)) { - ret = EX_VAR_2(EG(current_execute_data), var); + ret = EX_VAR_NUM_2(EG(current_execute_data), var); ZVAL_NULL(ret); } else if ((ret = zend_hash_find(EG(active_symbol_table), cv)) == NULL) { ret = zend_hash_update(EG(active_symbol_table), cv, &EG(uninitialized_zval)); @@ -1365,7 +1365,7 @@ void zend_free_compiled_variables(zend_execute_data *execute_data TSRMLS_DC) /* * | VAR[op_array->last_var-1] | * | VAR[op_array->last_var] | * | ... | - * | VAR[op_array->T-1] | + * | VAR[op_array->last_var+op_array->T-1] | * +----------------------------------------+ * EX(call_slots) -> | CALL_SLOT[0] | * | ... | diff --git a/Zend/zend_execute.h b/Zend/zend_execute.h index 5a287e0570..14bb99906e 100644 --- a/Zend/zend_execute.h +++ b/Zend/zend_execute.h @@ -226,7 +226,8 @@ static zend_always_inline zval *zend_vm_stack_top(TSRMLS_D) static zend_always_inline void zend_vm_stack_push(zval *ptr TSRMLS_DC) { - *(EG(argument_stack)->top++) = *ptr; + ZVAL_COPY_VALUE(EG(argument_stack)->top, ptr); + EG(argument_stack)->top++; } static zend_always_inline zval *zend_vm_stack_pop(TSRMLS_D) diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 32a2a7545a..79d946d145 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -129,6 +129,7 @@ static int clean_non_persistent_class_full(zend_class_entry **ce TSRMLS_DC) /* { void init_executor(TSRMLS_D) /* {{{ */ { + zval tmp; zend_init_fpu(TSRMLS_C); ZVAL_NULL(&EG(uninitialized_zval)); @@ -152,7 +153,8 @@ void init_executor(TSRMLS_D) /* {{{ */ EG(error_handling) = EH_NORMAL; zend_vm_stack_init(TSRMLS_C); -//??? zend_vm_stack_push((void *) NULL TSRMLS_CC); + ZVAL_LONG(&tmp, 0); + zend_vm_stack_push(&tmp TSRMLS_CC); zend_hash_init(&EG(symbol_table).ht, 50, NULL, ZVAL_PTR_DTOR, 0); EG(active_symbol_table) = &EG(symbol_table).ht; @@ -734,6 +736,7 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS zval current_this; zend_execute_data execute_data; zend_fcall_info_cache fci_cache_local; + zval tmp; fci->retval = NULL; @@ -821,7 +824,7 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS ZEND_VM_STACK_GROW_IF_NEEDED(fci->param_count + 1); for (i=0; iparam_count; i++) { - zval *param, tmp; + zval *param; if (ARG_SHOULD_BE_SENT_BY_REF(EX(function_state).function, i + 1)) { if (!Z_ISREF(fci->params[i]) && Z_REFCOUNT(fci->params[i]) > 1) { @@ -831,7 +834,8 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS !ARG_MAY_BE_SENT_BY_REF(EX(function_state).function, i + 1)) { if (i || UNEXPECTED(ZEND_VM_STACK_ELEMETS(EG(argument_stack)) == (EG(argument_stack)->top))) { /* hack to clean up the stack */ - zend_vm_stack_push((void *) (zend_uintptr_t)i TSRMLS_CC); + ZVAL_LONG(&tmp, i); + zend_vm_stack_push(&tmp TSRMLS_CC); zend_vm_stack_clear_multiple(0 TSRMLS_CC); } @@ -866,7 +870,8 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS } EX(function_state).arguments = zend_vm_stack_top(TSRMLS_C); - zend_vm_stack_push((void*)(zend_uintptr_t)fci->param_count TSRMLS_CC); + ZVAL_LONG(&tmp, fci->param_count); + zend_vm_stack_push(&tmp TSRMLS_CC); current_scope = EG(scope); EG(scope) = calling_scope; diff --git a/Zend/zend_ini.h b/Zend/zend_ini.h index 86308f1929..971a574f8f 100644 --- a/Zend/zend_ini.h +++ b/Zend/zend_ini.h @@ -115,7 +115,7 @@ END_EXTERN_C() #define ZEND_INI_END() { 0, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, 0, NULL } }; #define ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, arg1, arg2, arg3, displayer) \ - { 0, modifiable, name, sizeof(name), on_modify, arg1, arg2, arg3, default_value, sizeof(default_value)-1, NULL, 0, 0, 0, displayer }, + { 0, modifiable, name, sizeof(name)-1, on_modify, arg1, arg2, arg3, default_value, sizeof(default_value)-1, NULL, 0, 0, 0, displayer }, #define ZEND_INI_ENTRY3(name, default_value, modifiable, on_modify, arg1, arg2, arg3) \ ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, arg1, arg2, arg3, NULL) @@ -154,21 +154,21 @@ END_EXTERN_C() ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr, NULL, zend_ini_boolean_displayer_cb) #endif -#define INI_INT(name) zend_ini_long((name), sizeof(name), 0) -#define INI_FLT(name) zend_ini_double((name), sizeof(name), 0) -#define INI_STR(name) zend_ini_string_ex((name), sizeof(name), 0, NULL) +#define INI_INT(name) zend_ini_long((name), sizeof(name)-1, 0) +#define INI_FLT(name) zend_ini_double((name), sizeof(name)-1, 0) +#define INI_STR(name) zend_ini_string_ex((name), sizeof(name)-1, 0, NULL) #define INI_BOOL(name) ((zend_bool) INI_INT(name)) -#define INI_ORIG_INT(name) zend_ini_long((name), sizeof(name), 1) -#define INI_ORIG_FLT(name) zend_ini_double((name), sizeof(name), 1) -#define INI_ORIG_STR(name) zend_ini_string((name), sizeof(name), 1) +#define INI_ORIG_INT(name) zend_ini_long((name), sizeof(name)-1, 1) +#define INI_ORIG_FLT(name) zend_ini_double((name), sizeof(name)-1, 1) +#define INI_ORIG_STR(name) zend_ini_string((name), sizeof(name)-1, 1) #define INI_ORIG_BOOL(name) ((zend_bool) INI_ORIG_INT(name)) #define REGISTER_INI_ENTRIES() zend_register_ini_entries(ini_entries, module_number TSRMLS_CC) #define UNREGISTER_INI_ENTRIES() zend_unregister_ini_entries(module_number TSRMLS_CC) #define DISPLAY_INI_ENTRIES() display_ini_entries(zend_module) -#define REGISTER_INI_DISPLAYER(name, displayer) zend_ini_register_displayer((name), sizeof(name), displayer) +#define REGISTER_INI_DISPLAYER(name, displayer) zend_ini_register_displayer((name), sizeof(name)-1, displayer) #define REGISTER_INI_BOOLEAN(name) REGISTER_INI_DISPLAYER(name, zend_ini_boolean_displayer_cb) /* Standard message handlers */ diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index ee9dfb8333..78b7c8efef 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1103,7 +1103,7 @@ yyc_INITIAL: yy3: YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1755 "Zend/zend_language_scanner.l" +#line 1753 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1180,7 +1180,7 @@ yy5: yy6: YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1745 "Zend/zend_language_scanner.l" +#line 1743 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng); @@ -1197,7 +1197,7 @@ yy7: if ((yych = *YYCURSOR) == '=') goto yy43; YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1724 "Zend/zend_language_scanner.l" +#line 1722 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { //??? ZVAL_STRINGL(zendlval, yytext, yyleng); @@ -1394,7 +1394,7 @@ yy35: ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1687 "Zend/zend_language_scanner.l" +#line 1685 "Zend/zend_language_scanner.l" { YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1)); @@ -1437,7 +1437,7 @@ yy43: ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1704 "Zend/zend_language_scanner.l" +#line 1702 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { //??? ZVAL_STRINGL(zendlval, yytext, yyleng); @@ -1454,7 +1454,7 @@ yy45: ++YYCURSOR; YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1716 "Zend/zend_language_scanner.l" +#line 1714 "Zend/zend_language_scanner.l" { //??? ZVAL_STRINGL(zendlval, yytext, yyleng); ZVAL_STR(zendlval, STR_EMPTY_ALLOC()); /* tricky way to no copying - intentional */ @@ -1488,7 +1488,7 @@ yy50: yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1736 "Zend/zend_language_scanner.l" +#line 1734 "Zend/zend_language_scanner.l" { //??? ZVAL_STRINGL(zendlval, yytext, yyleng); ZVAL_STR(zendlval, STR_EMPTY_ALLOC()); /* tricky way, no copying intentional */ @@ -1567,7 +1567,7 @@ yyc_ST_BACKQUOTE: yy56: YYDEBUG(56, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2198 "Zend/zend_language_scanner.l" +#line 2192 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1619,7 +1619,7 @@ yy58: ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2142 "Zend/zend_language_scanner.l" +#line 2136 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; @@ -1634,7 +1634,7 @@ yy61: ++YYCURSOR; YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2129 "Zend/zend_language_scanner.l" +#line 2123 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); @@ -1657,24 +1657,23 @@ yy63: yy65: YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1836 "Zend/zend_language_scanner.l" +#line 1832 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1667 "Zend/zend_language_scanner.c" +#line 1666 "Zend/zend_language_scanner.c" yy66: YYDEBUG(66, *YYCURSOR); ++YYCURSOR; YYDEBUG(67, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1465 "Zend/zend_language_scanner.l" +#line 1464 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1678 "Zend/zend_language_scanner.c" +#line 1677 "Zend/zend_language_scanner.c" yy68: YYDEBUG(68, *YYCURSOR); yych = *++YYCURSOR; @@ -1688,15 +1687,14 @@ yy70: ++YYCURSOR; YYDEBUG(71, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1828 "Zend/zend_language_scanner.l" +#line 1825 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1700 "Zend/zend_language_scanner.c" +#line 1698 "Zend/zend_language_scanner.c" yy72: YYDEBUG(72, *YYCURSOR); yych = *++YYCURSOR; @@ -1714,15 +1712,14 @@ yy73: ++YYCURSOR; YYDEBUG(74, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1818 "Zend/zend_language_scanner.l" +#line 1816 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1726 "Zend/zend_language_scanner.c" +#line 1723 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1790,7 +1787,7 @@ yy77: yy78: YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2148 "Zend/zend_language_scanner.l" +#line 2142 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1839,7 +1836,7 @@ double_quotes_scan_done: zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1843 "Zend/zend_language_scanner.c" +#line 1840 "Zend/zend_language_scanner.c" yy79: YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; @@ -1850,12 +1847,12 @@ yy80: ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2137 "Zend/zend_language_scanner.l" +#line 2131 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; } -#line 1859 "Zend/zend_language_scanner.c" +#line 1856 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -1865,14 +1862,14 @@ yy83: ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2129 "Zend/zend_language_scanner.l" +#line 2123 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 1876 "Zend/zend_language_scanner.c" +#line 1873 "Zend/zend_language_scanner.c" yy85: YYDEBUG(85, *YYCURSOR); yyaccept = 0; @@ -1888,24 +1885,23 @@ yy85: yy87: YYDEBUG(87, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1836 "Zend/zend_language_scanner.l" +#line 1832 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1898 "Zend/zend_language_scanner.c" +#line 1894 "Zend/zend_language_scanner.c" yy88: YYDEBUG(88, *YYCURSOR); ++YYCURSOR; YYDEBUG(89, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1465 "Zend/zend_language_scanner.l" +#line 1464 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1909 "Zend/zend_language_scanner.c" +#line 1905 "Zend/zend_language_scanner.c" yy90: YYDEBUG(90, *YYCURSOR); yych = *++YYCURSOR; @@ -1919,15 +1915,14 @@ yy92: ++YYCURSOR; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1828 "Zend/zend_language_scanner.l" +#line 1825 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1931 "Zend/zend_language_scanner.c" +#line 1926 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); yych = *++YYCURSOR; @@ -1945,15 +1940,14 @@ yy95: ++YYCURSOR; YYDEBUG(96, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1818 "Zend/zend_language_scanner.l" +#line 1816 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1957 "Zend/zend_language_scanner.c" +#line 1951 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -1964,7 +1958,7 @@ yyc_ST_END_HEREDOC: ++YYCURSOR; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2115 "Zend/zend_language_scanner.l" +#line 2109 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1977,7 +1971,7 @@ yyc_ST_END_HEREDOC: BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 1981 "Zend/zend_language_scanner.c" +#line 1975 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -2039,7 +2033,7 @@ yy103: yy104: YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2240 "Zend/zend_language_scanner.l" +#line 2234 "Zend/zend_language_scanner.l" { int newline = 0; @@ -2112,7 +2106,7 @@ heredoc_scan_done: zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2116 "Zend/zend_language_scanner.c" +#line 2110 "Zend/zend_language_scanner.c" yy105: YYDEBUG(105, *YYCURSOR); yych = *++YYCURSOR; @@ -2127,14 +2121,14 @@ yy107: ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2129 "Zend/zend_language_scanner.l" +#line 2123 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2138 "Zend/zend_language_scanner.c" +#line 2132 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 0; @@ -2150,24 +2144,23 @@ yy109: yy111: YYDEBUG(111, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1836 "Zend/zend_language_scanner.l" +#line 1832 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2160 "Zend/zend_language_scanner.c" +#line 2153 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); ++YYCURSOR; YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1465 "Zend/zend_language_scanner.l" +#line 1464 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2171 "Zend/zend_language_scanner.c" +#line 2164 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); yych = *++YYCURSOR; @@ -2181,15 +2174,14 @@ yy116: ++YYCURSOR; YYDEBUG(117, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1828 "Zend/zend_language_scanner.l" +#line 1825 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2193 "Zend/zend_language_scanner.c" +#line 2185 "Zend/zend_language_scanner.c" yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; @@ -2207,15 +2199,14 @@ yy119: ++YYCURSOR; YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1818 "Zend/zend_language_scanner.l" +#line 1816 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2219 "Zend/zend_language_scanner.c" +#line 2210 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2398,13 +2389,12 @@ yy123: yy124: YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1859 "Zend/zend_language_scanner.l" +#line 1854 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); - zendlval->type = IS_STRING; return T_STRING; } -#line 2408 "Zend/zend_language_scanner.c" +#line 2398 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); yych = *++YYCURSOR; @@ -2636,11 +2626,11 @@ yy138: yy139: YYDEBUG(139, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1454 "Zend/zend_language_scanner.l" +#line 1453 "Zend/zend_language_scanner.l" { return yytext[0]; } -#line 2644 "Zend/zend_language_scanner.c" +#line 2634 "Zend/zend_language_scanner.c" yy140: YYDEBUG(140, *YYCURSOR); ++YYCURSOR; @@ -2656,7 +2646,7 @@ yy141: HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 2660 "Zend/zend_language_scanner.c" +#line 2650 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); yych = *++YYCURSOR; @@ -2667,11 +2657,11 @@ yy143: ++YYCURSOR; YYDEBUG(144, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1210 "Zend/zend_language_scanner.l" +#line 1209 "Zend/zend_language_scanner.l" { return T_NS_SEPARATOR; } -#line 2675 "Zend/zend_language_scanner.c" +#line 2665 "Zend/zend_language_scanner.c" yy145: YYDEBUG(145, *YYCURSOR); yyaccept = 1; @@ -2904,18 +2894,18 @@ yy168: ++YYCURSOR; YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1459 "Zend/zend_language_scanner.l" +#line 1458 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } -#line 2913 "Zend/zend_language_scanner.c" +#line 2903 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; YYDEBUG(171, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1471 "Zend/zend_language_scanner.l" +#line 1470 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2923,7 +2913,7 @@ yy170: } return '}'; } -#line 2927 "Zend/zend_language_scanner.c" +#line 2917 "Zend/zend_language_scanner.c" yy172: YYDEBUG(172, *YYCURSOR); yyaccept = 2; @@ -2951,7 +2941,7 @@ yy172: yy173: YYDEBUG(173, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1521 "Zend/zend_language_scanner.l" +#line 1519 "Zend/zend_language_scanner.l" { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); @@ -2972,7 +2962,7 @@ yy173: zendlval->type = IS_LONG; return T_LNUMBER; } -#line 2976 "Zend/zend_language_scanner.c" +#line 2966 "Zend/zend_language_scanner.c" yy174: YYDEBUG(174, *YYCURSOR); yyaccept = 2; @@ -3000,7 +2990,7 @@ yy176: yy177: YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1866 "Zend/zend_language_scanner.l" +#line 1860 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -3034,14 +3024,14 @@ yy177: return T_COMMENT; } -#line 3038 "Zend/zend_language_scanner.c" +#line 3028 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; yy179: YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1952 "Zend/zend_language_scanner.l" +#line 1946 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3107,14 +3097,14 @@ yy179: } return T_CONSTANT_ENCAPSED_STRING; } -#line 3111 "Zend/zend_language_scanner.c" +#line 3101 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; yy181: YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2019 "Zend/zend_language_scanner.l" +#line 2013 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3155,24 +3145,24 @@ yy181: BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 3159 "Zend/zend_language_scanner.c" +#line 3149 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2109 "Zend/zend_language_scanner.l" +#line 2103 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 3170 "Zend/zend_language_scanner.c" +#line 3160 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2372 "Zend/zend_language_scanner.l" +#line 2365 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -3181,7 +3171,7 @@ yy184: zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3185 "Zend/zend_language_scanner.c" +#line 3175 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3208,12 +3198,12 @@ yy188: yy190: YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1580 "Zend/zend_language_scanner.l" +#line 1578 "Zend/zend_language_scanner.l" { ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL)); return T_DNUMBER; } -#line 3217 "Zend/zend_language_scanner.c" +#line 3207 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); yyaccept = 2; @@ -3305,7 +3295,7 @@ yy200: } YYDEBUG(202, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1497 "Zend/zend_language_scanner.l" +#line 1495 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3329,7 +3319,7 @@ yy200: return T_DNUMBER; } } -#line 3333 "Zend/zend_language_scanner.c" +#line 3323 "Zend/zend_language_scanner.c" yy203: YYDEBUG(203, *YYCURSOR); ++YYCURSOR; @@ -3341,7 +3331,7 @@ yy203: } YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1542 "Zend/zend_language_scanner.l" +#line 1540 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3365,7 +3355,7 @@ yy203: return T_DNUMBER; } } -#line 3369 "Zend/zend_language_scanner.c" +#line 3359 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3374,13 +3364,13 @@ yy206: yy207: YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1933 "Zend/zend_language_scanner.l" +#line 1927 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng); BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 3384 "Zend/zend_language_scanner.c" +#line 3374 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); yych = *++YYCURSOR; @@ -3414,13 +3404,12 @@ yy210: yy212: YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1836 "Zend/zend_language_scanner.l" +#line 1832 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } -#line 3424 "Zend/zend_language_scanner.c" +#line 3413 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; @@ -3434,11 +3423,11 @@ yy214: } YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1442 "Zend/zend_language_scanner.l" +#line 1441 "Zend/zend_language_scanner.l" { return T_LOGICAL_XOR; } -#line 3442 "Zend/zend_language_scanner.c" +#line 3431 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3447,61 +3436,61 @@ yy216: } YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1434 "Zend/zend_language_scanner.l" +#line 1433 "Zend/zend_language_scanner.l" { return T_LOGICAL_OR; } -#line 3455 "Zend/zend_language_scanner.c" +#line 3444 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1422 "Zend/zend_language_scanner.l" +#line 1421 "Zend/zend_language_scanner.l" { return T_XOR_EQUAL; } -#line 3465 "Zend/zend_language_scanner.c" +#line 3454 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1426 "Zend/zend_language_scanner.l" +#line 1425 "Zend/zend_language_scanner.l" { return T_BOOLEAN_OR; } -#line 3475 "Zend/zend_language_scanner.c" +#line 3464 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); ++YYCURSOR; YYDEBUG(223, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1418 "Zend/zend_language_scanner.l" +#line 1417 "Zend/zend_language_scanner.l" { return T_OR_EQUAL; } -#line 3485 "Zend/zend_language_scanner.c" +#line 3474 "Zend/zend_language_scanner.c" yy224: YYDEBUG(224, *YYCURSOR); ++YYCURSOR; YYDEBUG(225, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1430 "Zend/zend_language_scanner.l" +#line 1429 "Zend/zend_language_scanner.l" { return T_BOOLEAN_AND; } -#line 3495 "Zend/zend_language_scanner.c" +#line 3484 "Zend/zend_language_scanner.c" yy226: YYDEBUG(226, *YYCURSOR); ++YYCURSOR; YYDEBUG(227, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1414 "Zend/zend_language_scanner.l" +#line 1413 "Zend/zend_language_scanner.l" { return T_AND_EQUAL; } -#line 3505 "Zend/zend_language_scanner.c" +#line 3494 "Zend/zend_language_scanner.c" yy228: YYDEBUG(228, *YYCURSOR); ++YYCURSOR; @@ -3510,7 +3499,7 @@ yy228: yy229: YYDEBUG(229, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1940 "Zend/zend_language_scanner.l" +#line 1934 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -3521,17 +3510,17 @@ yy229: return yytext[0]; } } -#line 3525 "Zend/zend_language_scanner.c" +#line 3514 "Zend/zend_language_scanner.c" yy230: YYDEBUG(230, *YYCURSOR); ++YYCURSOR; YYDEBUG(231, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1402 "Zend/zend_language_scanner.l" +#line 1401 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 3535 "Zend/zend_language_scanner.c" +#line 3524 "Zend/zend_language_scanner.c" yy232: YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; @@ -3549,7 +3538,7 @@ yy234: yy235: YYDEBUG(235, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1900 "Zend/zend_language_scanner.l" +#line 1894 "Zend/zend_language_scanner.l" { int doc_com; @@ -3582,7 +3571,7 @@ yy235: return T_COMMENT; } -#line 3586 "Zend/zend_language_scanner.c" +#line 3575 "Zend/zend_language_scanner.c" yy236: YYDEBUG(236, *YYCURSOR); yych = *++YYCURSOR; @@ -3592,11 +3581,11 @@ yy237: ++YYCURSOR; YYDEBUG(238, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1394 "Zend/zend_language_scanner.l" +#line 1393 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 3600 "Zend/zend_language_scanner.c" +#line 3589 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); yych = *++YYCURSOR; @@ -3619,42 +3608,42 @@ yy242: ++YYCURSOR; YYDEBUG(243, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1390 "Zend/zend_language_scanner.l" +#line 1389 "Zend/zend_language_scanner.l" { return T_MUL_EQUAL; } -#line 3627 "Zend/zend_language_scanner.c" +#line 3616 "Zend/zend_language_scanner.c" yy244: YYDEBUG(244, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy248; YYDEBUG(245, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1450 "Zend/zend_language_scanner.l" +#line 1449 "Zend/zend_language_scanner.l" { return T_SR; } -#line 3638 "Zend/zend_language_scanner.c" +#line 3627 "Zend/zend_language_scanner.c" yy246: YYDEBUG(246, *YYCURSOR); ++YYCURSOR; YYDEBUG(247, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1378 "Zend/zend_language_scanner.l" +#line 1377 "Zend/zend_language_scanner.l" { return T_IS_GREATER_OR_EQUAL; } -#line 3648 "Zend/zend_language_scanner.c" +#line 3637 "Zend/zend_language_scanner.c" yy248: YYDEBUG(248, *YYCURSOR); ++YYCURSOR; YYDEBUG(249, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1410 "Zend/zend_language_scanner.l" +#line 1409 "Zend/zend_language_scanner.l" { return T_SR_EQUAL; } -#line 3658 "Zend/zend_language_scanner.c" +#line 3647 "Zend/zend_language_scanner.c" yy250: YYDEBUG(250, *YYCURSOR); yyaccept = 5; @@ -3665,11 +3654,11 @@ yy250: yy251: YYDEBUG(251, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1446 "Zend/zend_language_scanner.l" +#line 1445 "Zend/zend_language_scanner.l" { return T_SL; } -#line 3673 "Zend/zend_language_scanner.c" +#line 3662 "Zend/zend_language_scanner.c" yy252: YYDEBUG(252, *YYCURSOR); yych = *++YYCURSOR; @@ -3681,22 +3670,22 @@ yy253: ++YYCURSOR; YYDEBUG(254, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1374 "Zend/zend_language_scanner.l" +#line 1373 "Zend/zend_language_scanner.l" { return T_IS_SMALLER_OR_EQUAL; } -#line 3689 "Zend/zend_language_scanner.c" +#line 3678 "Zend/zend_language_scanner.c" yy255: YYDEBUG(255, *YYCURSOR); ++YYCURSOR; yy256: YYDEBUG(256, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1370 "Zend/zend_language_scanner.l" +#line 1369 "Zend/zend_language_scanner.l" { return T_IS_NOT_EQUAL; } -#line 3700 "Zend/zend_language_scanner.c" +#line 3689 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; @@ -3747,11 +3736,11 @@ yy264: ++YYCURSOR; YYDEBUG(265, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1406 "Zend/zend_language_scanner.l" +#line 1405 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 3755 "Zend/zend_language_scanner.c" +#line 3744 "Zend/zend_language_scanner.c" yy266: YYDEBUG(266, *YYCURSOR); ++YYCURSOR; @@ -3856,7 +3845,7 @@ yy275: yy276: YYDEBUG(276, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2061 "Zend/zend_language_scanner.l" +#line 2055 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -3903,7 +3892,7 @@ yy276: return T_START_HEREDOC; } -#line 3907 "Zend/zend_language_scanner.c" +#line 3896 "Zend/zend_language_scanner.c" yy277: YYDEBUG(277, *YYCURSOR); yych = *++YYCURSOR; @@ -3943,31 +3932,31 @@ yy280: ++YYCURSOR; YYDEBUG(282, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1362 "Zend/zend_language_scanner.l" +#line 1361 "Zend/zend_language_scanner.l" { return T_IS_NOT_IDENTICAL; } -#line 3951 "Zend/zend_language_scanner.c" +#line 3940 "Zend/zend_language_scanner.c" yy283: YYDEBUG(283, *YYCURSOR); ++YYCURSOR; YYDEBUG(284, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1382 "Zend/zend_language_scanner.l" +#line 1381 "Zend/zend_language_scanner.l" { return T_PLUS_EQUAL; } -#line 3961 "Zend/zend_language_scanner.c" +#line 3950 "Zend/zend_language_scanner.c" yy285: YYDEBUG(285, *YYCURSOR); ++YYCURSOR; YYDEBUG(286, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1350 "Zend/zend_language_scanner.l" +#line 1349 "Zend/zend_language_scanner.l" { return T_INC; } -#line 3971 "Zend/zend_language_scanner.c" +#line 3960 "Zend/zend_language_scanner.c" yy287: YYDEBUG(287, *YYCURSOR); yych = *++YYCURSOR; @@ -3986,42 +3975,42 @@ yy289: } YYDEBUG(290, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1338 "Zend/zend_language_scanner.l" +#line 1337 "Zend/zend_language_scanner.l" { return T_LIST; } -#line 3994 "Zend/zend_language_scanner.c" +#line 3983 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy295; YYDEBUG(292, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1366 "Zend/zend_language_scanner.l" +#line 1365 "Zend/zend_language_scanner.l" { return T_IS_EQUAL; } -#line 4005 "Zend/zend_language_scanner.c" +#line 3994 "Zend/zend_language_scanner.c" yy293: YYDEBUG(293, *YYCURSOR); ++YYCURSOR; YYDEBUG(294, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1334 "Zend/zend_language_scanner.l" +#line 1333 "Zend/zend_language_scanner.l" { return T_DOUBLE_ARROW; } -#line 4015 "Zend/zend_language_scanner.c" +#line 4004 "Zend/zend_language_scanner.c" yy295: YYDEBUG(295, *YYCURSOR); ++YYCURSOR; YYDEBUG(296, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1358 "Zend/zend_language_scanner.l" +#line 1357 "Zend/zend_language_scanner.l" { return T_IS_IDENTICAL; } -#line 4025 "Zend/zend_language_scanner.c" +#line 4014 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; @@ -4151,7 +4140,7 @@ yy313: } YYDEBUG(316, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1678 "Zend/zend_language_scanner.l" +#line 1676 "Zend/zend_language_scanner.l" { if (Z_TYPE(CG(current_namespace)) != IS_UNDEF) { ZVAL_DUP(zendlval, &CG(current_namespace)); @@ -4160,7 +4149,7 @@ yy313: } return T_NS_C; } -#line 4164 "Zend/zend_language_scanner.c" +#line 4153 "Zend/zend_language_scanner.c" yy317: YYDEBUG(317, *YYCURSOR); yych = *++YYCURSOR; @@ -4180,7 +4169,7 @@ yy318: } YYDEBUG(321, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1653 "Zend/zend_language_scanner.l" +#line 1651 "Zend/zend_language_scanner.l" { zend_string *filename = zend_get_compiled_filename(TSRMLS_C); zend_string *dirname; @@ -4205,7 +4194,7 @@ yy318: ZVAL_STR(zendlval, dirname); return T_DIR; } -#line 4209 "Zend/zend_language_scanner.c" +#line 4198 "Zend/zend_language_scanner.c" yy322: YYDEBUG(322, *YYCURSOR); yych = *++YYCURSOR; @@ -4230,12 +4219,12 @@ yy324: } YYDEBUG(327, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1638 "Zend/zend_language_scanner.l" +#line 1636 "Zend/zend_language_scanner.l" { ZVAL_LONG(zendlval, CG(zend_lineno)); return T_LINE; } -#line 4239 "Zend/zend_language_scanner.c" +#line 4228 "Zend/zend_language_scanner.c" yy328: YYDEBUG(328, *YYCURSOR); yych = *++YYCURSOR; @@ -4270,7 +4259,7 @@ yy332: } YYDEBUG(335, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1625 "Zend/zend_language_scanner.l" +#line 1623 "Zend/zend_language_scanner.l" { const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name->val : NULL; const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name->val : NULL; @@ -4283,7 +4272,7 @@ yy332: zendlval->type = IS_STRING; return T_METHOD_C; } -#line 4287 "Zend/zend_language_scanner.c" +#line 4276 "Zend/zend_language_scanner.c" yy336: YYDEBUG(336, *YYCURSOR); yych = *++YYCURSOR; @@ -4334,7 +4323,7 @@ yy343: } YYDEBUG(346, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1614 "Zend/zend_language_scanner.l" +#line 1612 "Zend/zend_language_scanner.l" { zend_op_array *op_array = CG(active_op_array); if (op_array && op_array->function_name) { @@ -4345,7 +4334,7 @@ yy343: } return T_FUNC_C; } -#line 4349 "Zend/zend_language_scanner.c" +#line 4338 "Zend/zend_language_scanner.c" yy347: YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; @@ -4365,7 +4354,7 @@ yy348: } YYDEBUG(351, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1643 "Zend/zend_language_scanner.l" +#line 1641 "Zend/zend_language_scanner.l" { zend_string *filename = zend_get_compiled_filename(TSRMLS_C); @@ -4375,7 +4364,7 @@ yy348: ZVAL_STR(zendlval, filename); return T_FILE; } -#line 4379 "Zend/zend_language_scanner.c" +#line 4368 "Zend/zend_language_scanner.c" yy352: YYDEBUG(352, *YYCURSOR); yych = *++YYCURSOR; @@ -4405,7 +4394,7 @@ yy355: } YYDEBUG(358, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1603 "Zend/zend_language_scanner.l" +#line 1601 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ce->name && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4416,7 +4405,7 @@ yy355: } return T_TRAIT_C; } -#line 4420 "Zend/zend_language_scanner.c" +#line 4409 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; @@ -4446,7 +4435,7 @@ yy362: } YYDEBUG(365, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1585 "Zend/zend_language_scanner.l" +#line 1583 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4464,7 +4453,7 @@ yy362: } return T_CLASS_C; } -#line 4468 "Zend/zend_language_scanner.c" +#line 4457 "Zend/zend_language_scanner.c" yy366: YYDEBUG(366, *YYCURSOR); yych = *++YYCURSOR; @@ -4526,11 +4515,11 @@ yy377: } YYDEBUG(378, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1302 "Zend/zend_language_scanner.l" +#line 1301 "Zend/zend_language_scanner.l" { return T_HALT_COMPILER; } -#line 4534 "Zend/zend_language_scanner.c" +#line 4523 "Zend/zend_language_scanner.c" yy379: YYDEBUG(379, *YYCURSOR); yych = *++YYCURSOR; @@ -4550,11 +4539,11 @@ yy381: } YYDEBUG(382, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1282 "Zend/zend_language_scanner.l" +#line 1281 "Zend/zend_language_scanner.l" { return T_USE; } -#line 4558 "Zend/zend_language_scanner.c" +#line 4547 "Zend/zend_language_scanner.c" yy383: YYDEBUG(383, *YYCURSOR); yych = *++YYCURSOR; @@ -4573,11 +4562,11 @@ yy385: } YYDEBUG(386, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1330 "Zend/zend_language_scanner.l" +#line 1329 "Zend/zend_language_scanner.l" { return T_UNSET; } -#line 4581 "Zend/zend_language_scanner.c" +#line 4570 "Zend/zend_language_scanner.c" yy387: YYDEBUG(387, *YYCURSOR); ++YYCURSOR; @@ -4749,11 +4738,11 @@ yy402: ++YYCURSOR; YYDEBUG(404, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1230 "Zend/zend_language_scanner.l" +#line 1229 "Zend/zend_language_scanner.l" { return T_INT_CAST; } -#line 4757 "Zend/zend_language_scanner.c" +#line 4746 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; @@ -4797,11 +4786,11 @@ yy410: ++YYCURSOR; YYDEBUG(413, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1234 "Zend/zend_language_scanner.l" +#line 1233 "Zend/zend_language_scanner.l" { return T_DOUBLE_CAST; } -#line 4805 "Zend/zend_language_scanner.c" +#line 4794 "Zend/zend_language_scanner.c" yy414: YYDEBUG(414, *YYCURSOR); yych = *++YYCURSOR; @@ -4871,11 +4860,11 @@ yy424: ++YYCURSOR; YYDEBUG(427, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1238 "Zend/zend_language_scanner.l" +#line 1237 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 4879 "Zend/zend_language_scanner.c" +#line 4868 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; @@ -4908,11 +4897,11 @@ yy431: ++YYCURSOR; YYDEBUG(434, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1242 "Zend/zend_language_scanner.l" +#line 1241 "Zend/zend_language_scanner.l" { return T_ARRAY_CAST; } -#line 4916 "Zend/zend_language_scanner.c" +#line 4905 "Zend/zend_language_scanner.c" yy435: YYDEBUG(435, *YYCURSOR); yych = *++YYCURSOR; @@ -4950,11 +4939,11 @@ yy439: ++YYCURSOR; YYDEBUG(442, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1246 "Zend/zend_language_scanner.l" +#line 1245 "Zend/zend_language_scanner.l" { return T_OBJECT_CAST; } -#line 4958 "Zend/zend_language_scanner.c" +#line 4947 "Zend/zend_language_scanner.c" yy443: YYDEBUG(443, *YYCURSOR); yych = *++YYCURSOR; @@ -4995,11 +4984,11 @@ yy448: ++YYCURSOR; YYDEBUG(450, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1250 "Zend/zend_language_scanner.l" +#line 1249 "Zend/zend_language_scanner.l" { return T_BOOL_CAST; } -#line 5003 "Zend/zend_language_scanner.c" +#line 4992 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); yych = *++YYCURSOR; @@ -5059,11 +5048,11 @@ yy459: ++YYCURSOR; YYDEBUG(462, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1254 "Zend/zend_language_scanner.l" +#line 1253 "Zend/zend_language_scanner.l" { return T_UNSET_CAST; } -#line 5067 "Zend/zend_language_scanner.c" +#line 5056 "Zend/zend_language_scanner.c" yy463: YYDEBUG(463, *YYCURSOR); yych = *++YYCURSOR; @@ -5077,11 +5066,11 @@ yy464: } YYDEBUG(465, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1226 "Zend/zend_language_scanner.l" +#line 1225 "Zend/zend_language_scanner.l" { return T_VAR; } -#line 5085 "Zend/zend_language_scanner.c" +#line 5074 "Zend/zend_language_scanner.c" yy466: YYDEBUG(466, *YYCURSOR); yych = *++YYCURSOR; @@ -5101,11 +5090,11 @@ yy468: } YYDEBUG(469, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1218 "Zend/zend_language_scanner.l" +#line 1217 "Zend/zend_language_scanner.l" { return T_NEW; } -#line 5109 "Zend/zend_language_scanner.c" +#line 5098 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; @@ -5144,11 +5133,11 @@ yy476: } YYDEBUG(477, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1278 "Zend/zend_language_scanner.l" +#line 1277 "Zend/zend_language_scanner.l" { return T_NAMESPACE; } -#line 5152 "Zend/zend_language_scanner.c" +#line 5141 "Zend/zend_language_scanner.c" yy478: YYDEBUG(478, *YYCURSOR); yyaccept = 3; @@ -5170,11 +5159,11 @@ yy480: ++YYCURSOR; YYDEBUG(481, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1398 "Zend/zend_language_scanner.l" +#line 1397 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 5178 "Zend/zend_language_scanner.c" +#line 5167 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); yych = *++YYCURSOR; @@ -5183,21 +5172,21 @@ yy482: ++YYCURSOR; YYDEBUG(484, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1214 "Zend/zend_language_scanner.l" +#line 1213 "Zend/zend_language_scanner.l" { return T_ELLIPSIS; } -#line 5191 "Zend/zend_language_scanner.c" +#line 5180 "Zend/zend_language_scanner.c" yy485: YYDEBUG(485, *YYCURSOR); ++YYCURSOR; YYDEBUG(486, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1206 "Zend/zend_language_scanner.l" +#line 1205 "Zend/zend_language_scanner.l" { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 5201 "Zend/zend_language_scanner.c" +#line 5190 "Zend/zend_language_scanner.c" yy487: YYDEBUG(487, *YYCURSOR); ++YYCURSOR; @@ -5219,21 +5208,21 @@ yy489: ++YYCURSOR; YYDEBUG(490, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1386 "Zend/zend_language_scanner.l" +#line 1385 "Zend/zend_language_scanner.l" { return T_MINUS_EQUAL; } -#line 5227 "Zend/zend_language_scanner.c" +#line 5216 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); ++YYCURSOR; YYDEBUG(492, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1354 "Zend/zend_language_scanner.l" +#line 1353 "Zend/zend_language_scanner.l" { return T_DEC; } -#line 5237 "Zend/zend_language_scanner.c" +#line 5226 "Zend/zend_language_scanner.c" yy493: YYDEBUG(493, *YYCURSOR); ++YYCURSOR; @@ -5244,7 +5233,7 @@ yy493: yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); return T_OBJECT_OPERATOR; } -#line 5248 "Zend/zend_language_scanner.c" +#line 5237 "Zend/zend_language_scanner.c" yy495: YYDEBUG(495, *YYCURSOR); yych = *++YYCURSOR; @@ -5289,11 +5278,11 @@ yy500: } YYDEBUG(501, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1326 "Zend/zend_language_scanner.l" +#line 1325 "Zend/zend_language_scanner.l" { return T_PUBLIC; } -#line 5297 "Zend/zend_language_scanner.c" +#line 5286 "Zend/zend_language_scanner.c" yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; @@ -5348,11 +5337,11 @@ yy509: } YYDEBUG(510, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1322 "Zend/zend_language_scanner.l" +#line 1321 "Zend/zend_language_scanner.l" { return T_PROTECTED; } -#line 5356 "Zend/zend_language_scanner.c" +#line 5345 "Zend/zend_language_scanner.c" yy511: YYDEBUG(511, *YYCURSOR); yych = *++YYCURSOR; @@ -5382,11 +5371,11 @@ yy515: } YYDEBUG(516, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1318 "Zend/zend_language_scanner.l" +#line 1317 "Zend/zend_language_scanner.l" { return T_PRIVATE; } -#line 5390 "Zend/zend_language_scanner.c" +#line 5379 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); ++YYCURSOR; @@ -5399,7 +5388,7 @@ yy517: { return T_PRINT; } -#line 5403 "Zend/zend_language_scanner.c" +#line 5392 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); yych = *++YYCURSOR; @@ -5428,7 +5417,7 @@ yy522: { return T_GOTO; } -#line 5432 "Zend/zend_language_scanner.c" +#line 5421 "Zend/zend_language_scanner.c" yy524: YYDEBUG(524, *YYCURSOR); yych = *++YYCURSOR; @@ -5452,11 +5441,11 @@ yy527: } YYDEBUG(528, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1290 "Zend/zend_language_scanner.l" +#line 1289 "Zend/zend_language_scanner.l" { return T_GLOBAL; } -#line 5460 "Zend/zend_language_scanner.c" +#line 5449 "Zend/zend_language_scanner.c" yy529: YYDEBUG(529, *YYCURSOR); yych = *++YYCURSOR; @@ -5497,7 +5486,7 @@ yy535: { return T_BREAK; } -#line 5501 "Zend/zend_language_scanner.c" +#line 5490 "Zend/zend_language_scanner.c" yy537: YYDEBUG(537, *YYCURSOR); yych = *++YYCURSOR; @@ -5541,7 +5530,7 @@ yy543: { return T_SWITCH; } -#line 5545 "Zend/zend_language_scanner.c" +#line 5534 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; @@ -5565,11 +5554,11 @@ yy548: } YYDEBUG(549, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1306 "Zend/zend_language_scanner.l" +#line 1305 "Zend/zend_language_scanner.l" { return T_STATIC; } -#line 5573 "Zend/zend_language_scanner.c" +#line 5562 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; @@ -5600,7 +5589,7 @@ yy553: { return T_AS; } -#line 5604 "Zend/zend_language_scanner.c" +#line 5593 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; @@ -5619,11 +5608,11 @@ yy557: } YYDEBUG(558, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1342 "Zend/zend_language_scanner.l" +#line 1341 "Zend/zend_language_scanner.l" { return T_ARRAY; } -#line 5627 "Zend/zend_language_scanner.c" +#line 5616 "Zend/zend_language_scanner.c" yy559: YYDEBUG(559, *YYCURSOR); ++YYCURSOR; @@ -5632,11 +5621,11 @@ yy559: } YYDEBUG(560, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1438 "Zend/zend_language_scanner.l" +#line 1437 "Zend/zend_language_scanner.l" { return T_LOGICAL_AND; } -#line 5640 "Zend/zend_language_scanner.c" +#line 5629 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; @@ -5670,11 +5659,11 @@ yy566: } YYDEBUG(567, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1310 "Zend/zend_language_scanner.l" +#line 1309 "Zend/zend_language_scanner.l" { return T_ABSTRACT; } -#line 5678 "Zend/zend_language_scanner.c" +#line 5667 "Zend/zend_language_scanner.c" yy568: YYDEBUG(568, *YYCURSOR); yych = *++YYCURSOR; @@ -5702,7 +5691,7 @@ yy571: { return T_WHILE; } -#line 5706 "Zend/zend_language_scanner.c" +#line 5695 "Zend/zend_language_scanner.c" yy573: YYDEBUG(573, *YYCURSOR); ++YYCURSOR; @@ -5715,7 +5704,7 @@ yy573: { return T_IF; } -#line 5719 "Zend/zend_language_scanner.c" +#line 5708 "Zend/zend_language_scanner.c" yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; @@ -5767,11 +5756,11 @@ yy580: } YYDEBUG(581, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1294 "Zend/zend_language_scanner.l" +#line 1293 "Zend/zend_language_scanner.l" { return T_ISSET; } -#line 5775 "Zend/zend_language_scanner.c" +#line 5764 "Zend/zend_language_scanner.c" yy582: YYDEBUG(582, *YYCURSOR); yych = *++YYCURSOR; @@ -5825,11 +5814,11 @@ yy588: yy589: YYDEBUG(589, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1262 "Zend/zend_language_scanner.l" +#line 1261 "Zend/zend_language_scanner.l" { return T_INCLUDE; } -#line 5833 "Zend/zend_language_scanner.c" +#line 5822 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; @@ -5858,11 +5847,11 @@ yy594: } YYDEBUG(595, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1266 "Zend/zend_language_scanner.l" +#line 1265 "Zend/zend_language_scanner.l" { return T_INCLUDE_ONCE; } -#line 5866 "Zend/zend_language_scanner.c" +#line 5855 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -5900,7 +5889,7 @@ yy601: { return T_INTERFACE; } -#line 5904 "Zend/zend_language_scanner.c" +#line 5893 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); yych = *++YYCURSOR; @@ -5950,11 +5939,11 @@ yy609: } YYDEBUG(610, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1286 "Zend/zend_language_scanner.l" +#line 1285 "Zend/zend_language_scanner.l" { return T_INSTEADOF; } -#line 5958 "Zend/zend_language_scanner.c" +#line 5947 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; @@ -5987,7 +5976,7 @@ yy615: { return T_INSTANCEOF; } -#line 5991 "Zend/zend_language_scanner.c" +#line 5980 "Zend/zend_language_scanner.c" yy617: YYDEBUG(617, *YYCURSOR); yych = *++YYCURSOR; @@ -6035,7 +6024,7 @@ yy624: { return T_IMPLEMENTS; } -#line 6039 "Zend/zend_language_scanner.c" +#line 6028 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@ -6067,7 +6056,7 @@ yy627: { return T_TRY; } -#line 6071 "Zend/zend_language_scanner.c" +#line 6060 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; @@ -6090,7 +6079,7 @@ yy632: { return T_TRAIT; } -#line 6094 "Zend/zend_language_scanner.c" +#line 6083 "Zend/zend_language_scanner.c" yy634: YYDEBUG(634, *YYCURSOR); yych = *++YYCURSOR; @@ -6113,7 +6102,7 @@ yy636: { return T_THROW; } -#line 6117 "Zend/zend_language_scanner.c" +#line 6106 "Zend/zend_language_scanner.c" yy638: YYDEBUG(638, *YYCURSOR); yych = *++YYCURSOR; @@ -6141,7 +6130,7 @@ yy641: { return T_YIELD; } -#line 6145 "Zend/zend_language_scanner.c" +#line 6134 "Zend/zend_language_scanner.c" yy643: YYDEBUG(643, *YYCURSOR); yych = *++YYCURSOR; @@ -6202,11 +6191,11 @@ yy649: yy650: YYDEBUG(650, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1270 "Zend/zend_language_scanner.l" +#line 1269 "Zend/zend_language_scanner.l" { return T_REQUIRE; } -#line 6210 "Zend/zend_language_scanner.c" +#line 6199 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6235,11 +6224,11 @@ yy655: } YYDEBUG(656, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1274 "Zend/zend_language_scanner.l" +#line 1273 "Zend/zend_language_scanner.l" { return T_REQUIRE_ONCE; } -#line 6243 "Zend/zend_language_scanner.c" +#line 6232 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; @@ -6262,7 +6251,7 @@ yy659: { return T_RETURN; } -#line 6266 "Zend/zend_language_scanner.c" +#line 6255 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; @@ -6356,7 +6345,7 @@ yy670: { return T_CONTINUE; } -#line 6360 "Zend/zend_language_scanner.c" +#line 6349 "Zend/zend_language_scanner.c" yy672: YYDEBUG(672, *YYCURSOR); ++YYCURSOR; @@ -6369,7 +6358,7 @@ yy672: { return T_CONST; } -#line 6373 "Zend/zend_language_scanner.c" +#line 6362 "Zend/zend_language_scanner.c" yy674: YYDEBUG(674, *YYCURSOR); yych = *++YYCURSOR; @@ -6394,11 +6383,11 @@ yy677: } YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1222 "Zend/zend_language_scanner.l" +#line 1221 "Zend/zend_language_scanner.l" { return T_CLONE; } -#line 6402 "Zend/zend_language_scanner.c" +#line 6391 "Zend/zend_language_scanner.c" yy679: YYDEBUG(679, *YYCURSOR); yych = *++YYCURSOR; @@ -6416,7 +6405,7 @@ yy680: { return T_CLASS; } -#line 6420 "Zend/zend_language_scanner.c" +#line 6409 "Zend/zend_language_scanner.c" yy682: YYDEBUG(682, *YYCURSOR); yych = *++YYCURSOR; @@ -6462,11 +6451,11 @@ yy689: } YYDEBUG(690, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1346 "Zend/zend_language_scanner.l" +#line 1345 "Zend/zend_language_scanner.l" { return T_CALLABLE; } -#line 6470 "Zend/zend_language_scanner.c" +#line 6459 "Zend/zend_language_scanner.c" yy691: YYDEBUG(691, *YYCURSOR); ++YYCURSOR; @@ -6479,7 +6468,7 @@ yy691: { return T_CASE; } -#line 6483 "Zend/zend_language_scanner.c" +#line 6472 "Zend/zend_language_scanner.c" yy693: YYDEBUG(693, *YYCURSOR); yych = *++YYCURSOR; @@ -6497,7 +6486,7 @@ yy694: { return T_CATCH; } -#line 6501 "Zend/zend_language_scanner.c" +#line 6490 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; @@ -6552,7 +6541,7 @@ yy704: { return T_FUNCTION; } -#line 6556 "Zend/zend_language_scanner.c" +#line 6545 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); ++YYCURSOR; @@ -6580,7 +6569,7 @@ yy707: { return T_FOR; } -#line 6584 "Zend/zend_language_scanner.c" +#line 6573 "Zend/zend_language_scanner.c" yy708: YYDEBUG(708, *YYCURSOR); yych = *++YYCURSOR; @@ -6608,7 +6597,7 @@ yy711: { return T_FOREACH; } -#line 6612 "Zend/zend_language_scanner.c" +#line 6601 "Zend/zend_language_scanner.c" yy713: YYDEBUG(713, *YYCURSOR); yych = *++YYCURSOR; @@ -6642,11 +6631,11 @@ yy715: yy716: YYDEBUG(716, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1314 "Zend/zend_language_scanner.l" +#line 1313 "Zend/zend_language_scanner.l" { return T_FINAL; } -#line 6650 "Zend/zend_language_scanner.c" +#line 6639 "Zend/zend_language_scanner.c" yy717: YYDEBUG(717, *YYCURSOR); yych = *++YYCURSOR; @@ -6664,7 +6653,7 @@ yy718: { return T_FINALLY; } -#line 6668 "Zend/zend_language_scanner.c" +#line 6657 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -6699,7 +6688,7 @@ yy722: { return T_DO; } -#line 6703 "Zend/zend_language_scanner.c" +#line 6692 "Zend/zend_language_scanner.c" yy724: YYDEBUG(724, *YYCURSOR); ++YYCURSOR; @@ -6712,7 +6701,7 @@ yy724: { return T_EXIT; } -#line 6716 "Zend/zend_language_scanner.c" +#line 6705 "Zend/zend_language_scanner.c" yy726: YYDEBUG(726, *YYCURSOR); yych = *++YYCURSOR; @@ -6751,7 +6740,7 @@ yy731: { return T_DEFAULT; } -#line 6755 "Zend/zend_language_scanner.c" +#line 6744 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; @@ -6779,7 +6768,7 @@ yy736: { return T_DECLARE; } -#line 6783 "Zend/zend_language_scanner.c" +#line 6772 "Zend/zend_language_scanner.c" yy738: YYDEBUG(738, *YYCURSOR); yych = *++YYCURSOR; @@ -6863,7 +6852,7 @@ yy749: { return T_EXTENDS; } -#line 6867 "Zend/zend_language_scanner.c" +#line 6856 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); ++YYCURSOR; @@ -6876,7 +6865,7 @@ yy751: { return T_EXIT; } -#line 6880 "Zend/zend_language_scanner.c" +#line 6869 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -6890,11 +6879,11 @@ yy754: } YYDEBUG(755, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1258 "Zend/zend_language_scanner.l" +#line 1257 "Zend/zend_language_scanner.l" { return T_EVAL; } -#line 6898 "Zend/zend_language_scanner.c" +#line 6887 "Zend/zend_language_scanner.c" yy756: YYDEBUG(756, *YYCURSOR); yych = *++YYCURSOR; @@ -6968,7 +6957,7 @@ yy765: { return T_ENDWHILE; } -#line 6972 "Zend/zend_language_scanner.c" +#line 6961 "Zend/zend_language_scanner.c" yy767: YYDEBUG(767, *YYCURSOR); yych = *++YYCURSOR; @@ -7001,7 +6990,7 @@ yy771: { return T_ENDSWITCH; } -#line 7005 "Zend/zend_language_scanner.c" +#line 6994 "Zend/zend_language_scanner.c" yy773: YYDEBUG(773, *YYCURSOR); ++YYCURSOR; @@ -7014,7 +7003,7 @@ yy773: { return T_ENDIF; } -#line 7018 "Zend/zend_language_scanner.c" +#line 7007 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); yych = *++YYCURSOR; @@ -7047,7 +7036,7 @@ yy777: { return T_ENDFOR; } -#line 7051 "Zend/zend_language_scanner.c" +#line 7040 "Zend/zend_language_scanner.c" yy778: YYDEBUG(778, *YYCURSOR); yych = *++YYCURSOR; @@ -7075,7 +7064,7 @@ yy781: { return T_ENDFOREACH; } -#line 7079 "Zend/zend_language_scanner.c" +#line 7068 "Zend/zend_language_scanner.c" yy783: YYDEBUG(783, *YYCURSOR); yych = *++YYCURSOR; @@ -7113,7 +7102,7 @@ yy788: { return T_ENDDECLARE; } -#line 7117 "Zend/zend_language_scanner.c" +#line 7106 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7132,11 +7121,11 @@ yy792: } YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1298 "Zend/zend_language_scanner.l" +#line 1297 "Zend/zend_language_scanner.l" { return T_EMPTY; } -#line 7140 "Zend/zend_language_scanner.c" +#line 7129 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); yych = *++YYCURSOR; @@ -7169,7 +7158,7 @@ yy796: { return T_ELSE; } -#line 7173 "Zend/zend_language_scanner.c" +#line 7162 "Zend/zend_language_scanner.c" yy797: YYDEBUG(797, *YYCURSOR); yych = *++YYCURSOR; @@ -7187,7 +7176,7 @@ yy798: { return T_ELSEIF; } -#line 7191 "Zend/zend_language_scanner.c" +#line 7180 "Zend/zend_language_scanner.c" yy800: YYDEBUG(800, *YYCURSOR); yych = *++YYCURSOR; @@ -7205,7 +7194,7 @@ yy801: { return T_ECHO; } -#line 7209 "Zend/zend_language_scanner.c" +#line 7198 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7285,7 +7274,7 @@ yy806: HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 7289 "Zend/zend_language_scanner.c" +#line 7278 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; @@ -7293,13 +7282,13 @@ yy807: yy808: YYDEBUG(808, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1200 "Zend/zend_language_scanner.l" +#line 1199 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); goto restart; } -#line 7303 "Zend/zend_language_scanner.c" +#line 7292 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); ++YYCURSOR; @@ -7312,10 +7301,9 @@ yy810: { yy_pop_state(TSRMLS_C); zend_copy_value(zendlval, yytext, yyleng); - zendlval->type = IS_STRING; return T_STRING; } -#line 7319 "Zend/zend_language_scanner.c" +#line 7307 "Zend/zend_language_scanner.c" yy811: YYDEBUG(811, *YYCURSOR); yych = *++YYCURSOR; @@ -7340,7 +7328,7 @@ yy814: { return T_OBJECT_OPERATOR; } -#line 7344 "Zend/zend_language_scanner.c" +#line 7332 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7425,14 +7413,14 @@ yy820: yy821: YYDEBUG(821, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1490 "Zend/zend_language_scanner.l" +#line 1488 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 7436 "Zend/zend_language_scanner.c" +#line 7424 "Zend/zend_language_scanner.c" yy822: YYDEBUG(822, *YYCURSOR); yych = *++YYCURSOR; @@ -7457,16 +7445,15 @@ yy826: ++YYCURSOR; YYDEBUG(827, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1480 "Zend/zend_language_scanner.l" +#line 1479 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); - zendlval->type = IS_STRING; yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } -#line 7470 "Zend/zend_language_scanner.c" +#line 7457 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7477,7 +7464,7 @@ yyc_ST_NOWDOC: ++YYCURSOR; YYDEBUG(831, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2314 "Zend/zend_language_scanner.l" +#line 2308 "Zend/zend_language_scanner.l" { int newline = 0; @@ -7530,11 +7517,10 @@ nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); zend_copy_value(zendlval, yytext, yyleng - newline); - zendlval->type = IS_STRING; HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } -#line 7538 "Zend/zend_language_scanner.c" +#line 7524 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7641,7 +7627,7 @@ yy834: yy835: YYDEBUG(835, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1566 "Zend/zend_language_scanner.l" +#line 1564 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { ZVAL_LONG(zendlval, strtol(yytext, NULL, 10)); @@ -7650,7 +7636,7 @@ yy835: } return T_NUM_STRING; } -#line 7654 "Zend/zend_language_scanner.c" +#line 7640 "Zend/zend_language_scanner.c" yy836: YYDEBUG(836, *YYCURSOR); yych = *++YYCURSOR; @@ -7670,23 +7656,23 @@ yy837: yy838: YYDEBUG(838, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1847 "Zend/zend_language_scanner.l" +#line 1842 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 7679 "Zend/zend_language_scanner.c" +#line 7665 "Zend/zend_language_scanner.c" yy839: YYDEBUG(839, *YYCURSOR); ++YYCURSOR; YYDEBUG(840, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1842 "Zend/zend_language_scanner.l" +#line 1837 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 7690 "Zend/zend_language_scanner.c" +#line 7676 "Zend/zend_language_scanner.c" yy841: YYDEBUG(841, *YYCURSOR); yych = *++YYCURSOR; @@ -7696,14 +7682,14 @@ yy842: ++YYCURSOR; YYDEBUG(843, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1852 "Zend/zend_language_scanner.l" +#line 1847 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); yy_pop_state(TSRMLS_C); return T_ENCAPSED_AND_WHITESPACE; } -#line 7707 "Zend/zend_language_scanner.c" +#line 7693 "Zend/zend_language_scanner.c" yy844: YYDEBUG(844, *YYCURSOR); ++YYCURSOR; @@ -7712,19 +7698,18 @@ yy844: yy845: YYDEBUG(845, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1859 "Zend/zend_language_scanner.l" +#line 1854 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); - zendlval->type = IS_STRING; return T_STRING; } -#line 7722 "Zend/zend_language_scanner.c" +#line 7707 "Zend/zend_language_scanner.c" yy846: YYDEBUG(846, *YYCURSOR); ++YYCURSOR; YYDEBUG(847, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2372 "Zend/zend_language_scanner.l" +#line 2365 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -7733,7 +7718,7 @@ yy846: zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7737 "Zend/zend_language_scanner.c" +#line 7722 "Zend/zend_language_scanner.c" yy848: YYDEBUG(848, *YYCURSOR); ++YYCURSOR; @@ -7769,13 +7754,12 @@ yy850: yy852: YYDEBUG(852, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1836 "Zend/zend_language_scanner.l" +#line 1832 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } -#line 7779 "Zend/zend_language_scanner.c" +#line 7763 "Zend/zend_language_scanner.c" yy853: YYDEBUG(853, *YYCURSOR); ++YYCURSOR; @@ -7815,12 +7799,12 @@ yy858: yy860: YYDEBUG(860, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1575 "Zend/zend_language_scanner.l" +#line 1573 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng); return T_NUM_STRING; } -#line 7824 "Zend/zend_language_scanner.c" +#line 7808 "Zend/zend_language_scanner.c" yy861: YYDEBUG(861, *YYCURSOR); ++YYCURSOR; @@ -7843,6 +7827,6 @@ yy863: goto yy860; } } -#line 2381 "Zend/zend_language_scanner.l" +#line 2374 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 0f120524a5..abe6826321 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1193,7 +1193,6 @@ NEWLINE ("\r"|"\n"|"\r\n") {LABEL} { yy_pop_state(TSRMLS_C); zend_copy_value(zendlval, yytext, yyleng); - zendlval->type = IS_STRING; return T_STRING; } @@ -1480,7 +1479,6 @@ NEWLINE ("\r"|"\n"|"\r\n") {LABEL}[[}] { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); - zendlval->type = IS_STRING; yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; @@ -1819,7 +1817,6 @@ inline_html: yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } @@ -1829,13 +1826,11 @@ inline_html: yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } "$"{LABEL} { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - zendlval->type = IS_STRING; return T_VARIABLE; } @@ -1858,7 +1853,6 @@ inline_html: {LABEL} { zend_copy_value(zendlval, yytext, yyleng); - zendlval->type = IS_STRING; return T_STRING; } @@ -2363,7 +2357,6 @@ nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); zend_copy_value(zendlval, yytext, yyleng - newline); - zendlval->type = IS_STRING; HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 8a9b26d3e7..ce7084817a 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -695,9 +695,16 @@ ZEND_API int pass_two(zend_op_array *op_array TSRMLS_DC) while (opline < end) { if (opline->op1_type == IS_CONST) { opline->op1.zv = &op_array->literals[opline->op1.constant].constant; + } else if (opline->op1_type & (IS_VAR|IS_TMP_VAR)) { + opline->op1.var = (zend_uint)EX_VAR_NUM_2(NULL, op_array->last_var + opline->op1.var); } if (opline->op2_type == IS_CONST) { opline->op2.zv = &op_array->literals[opline->op2.constant].constant; + } else if (opline->op2_type & (IS_VAR|IS_TMP_VAR)) { + opline->op2.var = (zend_uint)EX_VAR_NUM_2(NULL, op_array->last_var + opline->op2.var); + } + if (opline->result_type & (IS_VAR|IS_TMP_VAR)) { + opline->result.var = (zend_uint)EX_VAR_NUM_2(NULL, op_array->last_var + opline->result.var); } switch (opline->opcode) { case ZEND_GOTO: diff --git a/Zend/zend_string.h b/Zend/zend_string.h index 55db943994..7cbeb26164 100644 --- a/Zend/zend_string.h +++ b/Zend/zend_string.h @@ -110,7 +110,8 @@ static zend_always_inline zend_string *zend_str_init(const char *str, int len, i { zend_string *ret = STR_ALLOC(len, persistent); - memcpy(ret->val, str, len + 1); + memcpy(ret->val, str, len); + ret->val[len] = '\0'; return ret; } diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 2cf7e5268b..647efe4231 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -1027,7 +1027,6 @@ ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMP|VAR|CV, UNUSED|CONST| zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); /* break missing intentionally */ case BP_VAR_W: - Z_ADDREF_P(&EG(uninitialized_zval)); retval = zend_hash_update(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval)); break; EMPTY_SWITCH_DEFAULT_CASE() @@ -1602,7 +1601,7 @@ ZEND_VM_HANDLER(147, ZEND_ASSIGN_DIM, VAR|CV, CONST|TMP|VAR|UNUSED|CV) if (UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR((opline+1)->op2.var), value, (opline+1)->op1_type TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str->val + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -1650,7 +1649,7 @@ ZEND_VM_HANDLER(38, ZEND_ASSIGN, VAR|CV, CONST|TMP|VAR|CV) if (OP1_TYPE == IS_VAR && UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR(opline->op1.var), value, OP2_TYPE TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str->val + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -1748,7 +1747,7 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY) i_free_compiled_variables(execute_data TSRMLS_CC); } - zend_vm_stack_free((char*)execute_data - (ZEND_MM_ALIGNED_SIZE(sizeof(zval)) * op_array->T) TSRMLS_CC); + zend_vm_stack_free((char*)execute_data TSRMLS_CC); if ((op_array->fn_flags & ZEND_ACC_CLOSURE) && op_array->prototype) { zval_ptr_dtor((zval*)op_array->prototype); @@ -1877,8 +1876,11 @@ ZEND_VM_HELPER(zend_do_fcall_common_helper, ANY, ANY) if (EX(call)->num_additional_args) { EX(function_state).arguments = zend_vm_stack_push_args(num_args TSRMLS_CC); } else { + zval tmp; + + ZVAL_LONG(&tmp, num_args); EX(function_state).arguments = zend_vm_stack_top(TSRMLS_C); - zend_vm_stack_push((void*)(zend_uintptr_t) num_args TSRMLS_CC); + zend_vm_stack_push(&tmp TSRMLS_CC); } LOAD_OPLINE(); @@ -2955,7 +2957,7 @@ ZEND_VM_HELPER(zend_send_by_var_helper, VAR|CV, ANY) varptr = Z_REFVAL_P(varptr); } } else if (OP1_TYPE == IS_CV) { - Z_ADDREF_P(varptr); + if (IS_REFCOUNTED(Z_TYPE_P(varptr))) Z_ADDREF_P(varptr); } zend_vm_stack_push(varptr TSRMLS_CC); @@ -3240,7 +3242,7 @@ ZEND_VM_HANDLER(63, ZEND_RECV, ANY, ANY) zend_verify_arg_type((zend_function *) EG(active_op_array), arg_num, param, opline->extended_value TSRMLS_CC); var_ptr = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->result.var TSRMLS_CC); - Z_DELREF_P(var_ptr); + if (IS_REFCOUNTED(Z_TYPE_P(var_ptr))) Z_DELREF_P(var_ptr); ZVAL_COPY(var_ptr, param); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index ebb0b81092..6f6746c3bc 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -392,7 +392,7 @@ static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS) i_free_compiled_variables(execute_data TSRMLS_CC); } - zend_vm_stack_free((char*)execute_data - (ZEND_MM_ALIGNED_SIZE(sizeof(zval)) * op_array->T) TSRMLS_CC); + zend_vm_stack_free((char*)execute_data TSRMLS_CC); if ((op_array->fn_flags & ZEND_ACC_CLOSURE) && op_array->prototype) { zval_ptr_dtor((zval*)op_array->prototype); @@ -521,8 +521,11 @@ static int ZEND_FASTCALL zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_AR if (EX(call)->num_additional_args) { EX(function_state).arguments = zend_vm_stack_push_args(num_args TSRMLS_CC); } else { + zval tmp; + + ZVAL_LONG(&tmp, num_args); EX(function_state).arguments = zend_vm_stack_top(TSRMLS_C); - zend_vm_stack_push((void*)(zend_uintptr_t) num_args TSRMLS_CC); + zend_vm_stack_push(&tmp TSRMLS_CC); } LOAD_OPLINE(); @@ -868,7 +871,7 @@ static int ZEND_FASTCALL ZEND_RECV_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_verify_arg_type((zend_function *) EG(active_op_array), arg_num, param, opline->extended_value TSRMLS_CC); var_ptr = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->result.var TSRMLS_CC); - Z_DELREF_P(var_ptr); + if (IS_REFCOUNTED(Z_TYPE_P(var_ptr))) Z_DELREF_P(var_ptr); ZVAL_COPY(var_ptr, param); } @@ -3499,9 +3502,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_CONST(int type varname = opline->op1.zv; if (IS_CONST != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) { - ZVAL_DUP(&tmp_varname, varname); -//??? Z_SET_REFCOUNT(tmp_varname, 1); -//??? Z_UNSET_ISREF(tmp_varname); + ZVAL_DUP_DEREF(&tmp_varname, varname); convert_to_string(&tmp_varname); varname = &tmp_varname; } @@ -3550,7 +3551,6 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_CONST(int type zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); /* break missing intentionally */ case BP_VAR_W: - Z_ADDREF_P(&EG(uninitialized_zval)); retval = zend_hash_update(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval)); break; EMPTY_SWITCH_DEFAULT_CASE() @@ -5248,9 +5248,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_VAR(int type, varname = opline->op1.zv; if (IS_CONST != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) { - ZVAL_DUP(&tmp_varname, varname); -//??? Z_SET_REFCOUNT(tmp_varname, 1); -//??? Z_UNSET_ISREF(tmp_varname); + ZVAL_DUP_DEREF(&tmp_varname, varname); convert_to_string(&tmp_varname); varname = &tmp_varname; } @@ -5299,7 +5297,6 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_VAR(int type, zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); /* break missing intentionally */ case BP_VAR_W: - Z_ADDREF_P(&EG(uninitialized_zval)); retval = zend_hash_update(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval)); break; EMPTY_SWITCH_DEFAULT_CASE() @@ -5930,9 +5927,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int typ varname = opline->op1.zv; if (IS_CONST != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) { - ZVAL_DUP(&tmp_varname, varname); -//??? Z_SET_REFCOUNT(tmp_varname, 1); -//??? Z_UNSET_ISREF(tmp_varname); + ZVAL_DUP_DEREF(&tmp_varname, varname); convert_to_string(&tmp_varname); varname = &tmp_varname; } @@ -5981,7 +5976,6 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int typ zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); /* break missing intentionally */ case BP_VAR_W: - Z_ADDREF_P(&EG(uninitialized_zval)); retval = zend_hash_update(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval)); break; EMPTY_SWITCH_DEFAULT_CASE() @@ -8524,9 +8518,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_CONST(int type, varname = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (IS_TMP_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) { - ZVAL_DUP(&tmp_varname, varname); -//??? Z_SET_REFCOUNT(tmp_varname, 1); -//??? Z_UNSET_ISREF(tmp_varname); + ZVAL_DUP_DEREF(&tmp_varname, varname); convert_to_string(&tmp_varname); varname = &tmp_varname; } @@ -8575,7 +8567,6 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_CONST(int type, zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); /* break missing intentionally */ case BP_VAR_W: - Z_ADDREF_P(&EG(uninitialized_zval)); retval = zend_hash_update(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval)); break; EMPTY_SWITCH_DEFAULT_CASE() @@ -10149,9 +10140,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_VAR(int type, ZE varname = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (IS_TMP_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) { - ZVAL_DUP(&tmp_varname, varname); -//??? Z_SET_REFCOUNT(tmp_varname, 1); -//??? Z_UNSET_ISREF(tmp_varname); + ZVAL_DUP_DEREF(&tmp_varname, varname); convert_to_string(&tmp_varname); varname = &tmp_varname; } @@ -10200,7 +10189,6 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_VAR(int type, ZE zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); /* break missing intentionally */ case BP_VAR_W: - Z_ADDREF_P(&EG(uninitialized_zval)); retval = zend_hash_update(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval)); break; EMPTY_SWITCH_DEFAULT_CASE() @@ -10834,9 +10822,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_UNUSED(int type, varname = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (IS_TMP_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) { - ZVAL_DUP(&tmp_varname, varname); -//??? Z_SET_REFCOUNT(tmp_varname, 1); -//??? Z_UNSET_ISREF(tmp_varname); + ZVAL_DUP_DEREF(&tmp_varname, varname); convert_to_string(&tmp_varname); varname = &tmp_varname; } @@ -10885,7 +10871,6 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_UNUSED(int type, zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); /* break missing intentionally */ case BP_VAR_W: - Z_ADDREF_P(&EG(uninitialized_zval)); retval = zend_hash_update(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval)); break; EMPTY_SWITCH_DEFAULT_CASE() @@ -12534,7 +12519,7 @@ static int ZEND_FASTCALL zend_send_by_var_helper_SPEC_VAR(ZEND_OPCODE_HANDLER_AR varptr = Z_REFVAL_P(varptr); } } else if (IS_VAR == IS_CV) { - Z_ADDREF_P(varptr); + if (IS_REFCOUNTED(Z_TYPE_P(varptr))) Z_ADDREF_P(varptr); } zend_vm_stack_push(varptr TSRMLS_CC); @@ -14055,9 +14040,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_CONST(int type, varname = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (IS_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) { - ZVAL_DUP(&tmp_varname, varname); -//??? Z_SET_REFCOUNT(tmp_varname, 1); -//??? Z_UNSET_ISREF(tmp_varname); + ZVAL_DUP_DEREF(&tmp_varname, varname); convert_to_string(&tmp_varname); varname = &tmp_varname; } @@ -14106,7 +14089,6 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_CONST(int type, zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); /* break missing intentionally */ case BP_VAR_W: - Z_ADDREF_P(&EG(uninitialized_zval)); retval = zend_hash_update(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval)); break; EMPTY_SWITCH_DEFAULT_CASE() @@ -14657,7 +14639,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HAN if (UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR((opline+1)->op2.var), value, (opline+1)->op1_type TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str->val + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -14705,7 +14687,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR(opline->op1.var), value, IS_CONST TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str->val + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -16868,7 +16850,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDL if (UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR((opline+1)->op2.var), value, (opline+1)->op1_type TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str->val + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -16916,7 +16898,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_A if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR(opline->op1.var), value, IS_TMP_VAR TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str->val + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -18379,9 +18361,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_VAR(int type, ZE varname = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (IS_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) { - ZVAL_DUP(&tmp_varname, varname); -//??? Z_SET_REFCOUNT(tmp_varname, 1); -//??? Z_UNSET_ISREF(tmp_varname); + ZVAL_DUP_DEREF(&tmp_varname, varname); convert_to_string(&tmp_varname); varname = &tmp_varname; } @@ -18430,7 +18410,6 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_VAR(int type, ZE zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); /* break missing intentionally */ case BP_VAR_W: - Z_ADDREF_P(&EG(uninitialized_zval)); retval = zend_hash_update(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval)); break; EMPTY_SWITCH_DEFAULT_CASE() @@ -18982,7 +18961,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDL if (UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR((opline+1)->op2.var), value, (opline+1)->op1_type TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str->val + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -19030,7 +19009,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_A if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR(opline->op1.var), value, IS_VAR TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str->val + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -20237,9 +20216,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_UNUSED(int type, varname = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (IS_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) { - ZVAL_DUP(&tmp_varname, varname); -//??? Z_SET_REFCOUNT(tmp_varname, 1); -//??? Z_UNSET_ISREF(tmp_varname); + ZVAL_DUP_DEREF(&tmp_varname, varname); convert_to_string(&tmp_varname); varname = &tmp_varname; } @@ -20288,7 +20265,6 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_UNUSED(int type, zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); /* break missing intentionally */ case BP_VAR_W: - Z_ADDREF_P(&EG(uninitialized_zval)); retval = zend_hash_update(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval)); break; EMPTY_SWITCH_DEFAULT_CASE() @@ -20501,7 +20477,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HA if (UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR((opline+1)->op2.var), value, (opline+1)->op1_type TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str->val + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -22224,7 +22200,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLE if (UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR((opline+1)->op2.var), value, (opline+1)->op1_type TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str->val + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -22272,7 +22248,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_AR if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR(opline->op1.var), value, IS_CV TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str->val + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -29091,7 +29067,7 @@ static int ZEND_FASTCALL zend_send_by_var_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARG varptr = Z_REFVAL_P(varptr); } } else if (IS_CV == IS_CV) { - Z_ADDREF_P(varptr); + if (IS_REFCOUNTED(Z_TYPE_P(varptr))) Z_ADDREF_P(varptr); } zend_vm_stack_push(varptr TSRMLS_CC); @@ -30468,9 +30444,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_CONST(int type, Z varname = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); if (IS_CV != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) { - ZVAL_DUP(&tmp_varname, varname); -//??? Z_SET_REFCOUNT(tmp_varname, 1); -//??? Z_UNSET_ISREF(tmp_varname); + ZVAL_DUP_DEREF(&tmp_varname, varname); convert_to_string(&tmp_varname); varname = &tmp_varname; } @@ -30519,7 +30493,6 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_CONST(int type, Z zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); /* break missing intentionally */ case BP_VAR_W: - Z_ADDREF_P(&EG(uninitialized_zval)); retval = zend_hash_update(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval)); break; EMPTY_SWITCH_DEFAULT_CASE() @@ -31065,7 +31038,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAND if (UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR((opline+1)->op2.var), value, (opline+1)->op1_type TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str->val + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -31113,7 +31086,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR(opline->op1.var), value, IS_CONST TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str->val + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -33057,7 +33030,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLE if (UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR((opline+1)->op2.var), value, (opline+1)->op1_type TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str->val + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -33105,7 +33078,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_AR if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR(opline->op1.var), value, IS_TMP_VAR TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str->val + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -34447,9 +34420,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_VAR(int type, ZEN varname = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); if (IS_CV != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) { - ZVAL_DUP(&tmp_varname, varname); -//??? Z_SET_REFCOUNT(tmp_varname, 1); -//??? Z_UNSET_ISREF(tmp_varname); + ZVAL_DUP_DEREF(&tmp_varname, varname); convert_to_string(&tmp_varname); varname = &tmp_varname; } @@ -34498,7 +34469,6 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_VAR(int type, ZEN zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); /* break missing intentionally */ case BP_VAR_W: - Z_ADDREF_P(&EG(uninitialized_zval)); retval = zend_hash_update(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval)); break; EMPTY_SWITCH_DEFAULT_CASE() @@ -35045,7 +35015,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLE if (UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR((opline+1)->op2.var), value, (opline+1)->op1_type TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str->val + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -35093,7 +35063,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_AR if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR(opline->op1.var), value, IS_VAR TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str->val + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -36178,9 +36148,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_UNUSED(int type, varname = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); if (IS_CV != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) { - ZVAL_DUP(&tmp_varname, varname); -//??? Z_SET_REFCOUNT(tmp_varname, 1); -//??? Z_UNSET_ISREF(tmp_varname); + ZVAL_DUP_DEREF(&tmp_varname, varname); convert_to_string(&tmp_varname); varname = &tmp_varname; } @@ -36229,7 +36197,6 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_UNUSED(int type, zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname)); /* break missing intentionally */ case BP_VAR_W: - Z_ADDREF_P(&EG(uninitialized_zval)); retval = zend_hash_update(target_symbol_table, Z_STR_P(varname), &EG(uninitialized_zval)); break; EMPTY_SWITCH_DEFAULT_CASE() @@ -36441,7 +36408,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HAN if (UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR((opline+1)->op2.var), value, (opline+1)->op1_type TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str->val + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -38028,7 +37995,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER if (UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR((opline+1)->op2.var), value, (opline+1)->op1_type TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->str->val + Z_STR_OFFSET_P(EX_VAR((opline+1)->op2.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -38076,7 +38043,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARG if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(variable_ptr) == IS_STR_OFFSET)) { if (zend_assign_to_string_offset(EX_VAR(opline->op1.var), value, IS_CV TSRMLS_CC)) { if (RETURN_VALUE_USED(opline)) { - ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); + ZVAL_STRINGL(EX_VAR(opline->result.var), Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->str->val + Z_STR_OFFSET_P(EX_VAR(opline->op1.var))->offset, 1); } } else if (RETURN_VALUE_USED(opline)) { ZVAL_NULL(EX_VAR(opline->result.var));