diff options
| author | Nikita Popov <nikic@php.net> | 2013-09-13 15:08:01 +0200 | 
|---|---|---|
| committer | Nikita Popov <nikic@php.net> | 2013-09-13 15:08:01 +0200 | 
| commit | d2950ac2791cd03559a58e78f5cd626283b9ee4d (patch) | |
| tree | 743b4e6feade6381901222c7e792ae5b59c07db3 /Zend | |
| parent | 00799319f90570f113ba35d27ac71cca4bdaa572 (diff) | |
| download | php-git-d2950ac2791cd03559a58e78f5cd626283b9ee4d.tar.gz | |
Make use of Z_*VAL and ZVAL_* in language scanner
Diffstat (limited to 'Zend')
| -rw-r--r-- | Zend/zend_language_scanner.c | 948 | ||||
| -rw-r--r-- | Zend/zend_language_scanner.l | 254 | 
2 files changed, 532 insertions, 670 deletions
diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index deb799ab76..0f0f51194f 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -564,10 +564,8 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSR  	zend_bool original_in_compilation = CG(in_compilation);  	retval_znode.op_type = IS_CONST; -	retval_znode.u.constant.type = IS_LONG; -	retval_znode.u.constant.value.lval = 1; -	Z_UNSET_ISREF(retval_znode.u.constant); -	Z_SET_REFCOUNT(retval_znode.u.constant, 1); +	INIT_PZVAL(&retval_znode.u.constant); +	ZVAL_LONG(&retval_znode.u.constant, 1);  	zend_save_lexical_state(&original_lex_state TSRMLS_CC); @@ -624,7 +622,7 @@ zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC)  		convert_to_string(&tmp);  		filename = &tmp;  	} -	file_handle.filename = filename->value.str.val; +	file_handle.filename = Z_STRVAL_P(filename);  	file_handle.free_filename = 0;  	file_handle.type = ZEND_HANDLE_FILENAME;  	file_handle.opened_path = NULL; @@ -635,7 +633,7 @@ zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC)  		int dummy = 1;  		if (!file_handle.opened_path) { -			file_handle.opened_path = opened_path = estrndup(filename->value.str.val, filename->value.str.len); +			file_handle.opened_path = opened_path = estrndup(Z_STRVAL_P(filename), Z_STRLEN_P(filename));  		}  		zend_hash_add(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1, (void *)&dummy, sizeof(int), NULL); @@ -658,21 +656,21 @@ ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename TSRMLS_D  	size_t size;  	/* enforce two trailing NULLs for flex... */ -	if (IS_INTERNED(str->value.str.val)) { -		char *tmp = safe_emalloc(1, str->value.str.len, ZEND_MMAP_AHEAD); -		memcpy(tmp, str->value.str.val, str->value.str.len + ZEND_MMAP_AHEAD); -		str->value.str.val = tmp; +	if (IS_INTERNED(Z_STRVAL_P(str))) { +		char *tmp = safe_emalloc(1, Z_STRLEN_P(str), ZEND_MMAP_AHEAD); +		memcpy(tmp, Z_STRVAL_P(str), Z_STRLEN_P(str) + ZEND_MMAP_AHEAD); +		Z_STRVAL_P(str) = tmp;  	} else { -		str->value.str.val = safe_erealloc(str->value.str.val, 1, str->value.str.len, ZEND_MMAP_AHEAD); +		Z_STRVAL_P(str) = safe_erealloc(Z_STRVAL_P(str), 1, Z_STRLEN_P(str), ZEND_MMAP_AHEAD);  	} -	memset(str->value.str.val + str->value.str.len, 0, ZEND_MMAP_AHEAD); +	memset(Z_STRVAL_P(str) + Z_STRLEN_P(str), 0, ZEND_MMAP_AHEAD);  	SCNG(yy_in) = NULL;  	SCNG(yy_start) = NULL; -	buf = str->value.str.val; -	size = str->value.str.len; +	buf = Z_STRVAL_P(str); +	size = Z_STRLEN_P(str);  	if (CG(multibyte)) {  		SCNG(script_org) = (unsigned char*)buf; @@ -733,7 +731,7 @@ zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC)  	int compiler_result;  	zend_bool original_in_compilation = CG(in_compilation); -	if (source_string->value.str.len==0) { +	if (Z_STRLEN_P(source_string)==0) {  		efree(op_array);  		return NULL;  	} @@ -871,11 +869,11 @@ ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter  # define zend_copy_value(zendlval, yytext, yyleng) \  	if (SCNG(output_filter)) { \  		size_t sz = 0; \ -		SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); \ -		zendlval->value.str.len = sz; \ +		SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); \ +		Z_STRLEN_P(zendlval) = sz; \  	} else { \ -		zendlval->value.str.val = (char *) estrndup(yytext, yyleng); \ -		zendlval->value.str.len = yyleng; \ +		Z_STRVAL_P(zendlval) = (char *) estrndup(yytext, yyleng); \ +		Z_STRLEN_P(zendlval) = yyleng; \  	}  static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type TSRMLS_DC) @@ -886,8 +884,8 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo  	ZVAL_STRINGL(zendlval, str, len, 1);  	/* convert escape sequences */ -	s = t = zendlval->value.str.val; -	end = s+zendlval->value.str.len; +	s = t = Z_STRVAL_P(zendlval); +	end = s+Z_STRLEN_P(zendlval);  	while (s<end) {  		if (*s=='\\') {  			s++; @@ -899,23 +897,23 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo  			switch(*s) {  				case 'n':  					*t++ = '\n'; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case 'r':  					*t++ = '\r'; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case 't':  					*t++ = '\t'; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case 'f':  					*t++ = '\f'; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case 'v':  					*t++ = '\v'; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case 'e':  #ifdef PHP_WIN32 @@ -923,7 +921,7 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo  #else  					*t++ = '\e';  #endif -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case '"':  				case '`': @@ -935,20 +933,20 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo  				case '\\':  				case '$':  					*t++ = *s; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case 'x':  				case 'X':  					if (ZEND_IS_HEX(*(s+1))) {  						char hex_buf[3] = { 0, 0, 0 }; -						zendlval->value.str.len--; /* for the 'x' */ +						Z_STRLEN_P(zendlval)--; /* for the 'x' */  						hex_buf[0] = *(++s); -						zendlval->value.str.len--; +						Z_STRLEN_P(zendlval)--;  						if (ZEND_IS_HEX(*(s+1))) {  							hex_buf[1] = *(++s); -							zendlval->value.str.len--; +							Z_STRLEN_P(zendlval)--;  						}  						*t++ = (char) strtol(hex_buf, NULL, 16);  					} else { @@ -962,13 +960,13 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo  						char octal_buf[4] = { 0, 0, 0, 0 };  						octal_buf[0] = *s; -						zendlval->value.str.len--; +						Z_STRLEN_P(zendlval)--;  						if (ZEND_IS_OCT(*(s+1))) {  							octal_buf[1] = *(++s); -							zendlval->value.str.len--; +							Z_STRLEN_P(zendlval)--;  							if (ZEND_IS_OCT(*(s+1))) {  								octal_buf[2] = *(++s); -								zendlval->value.str.len--; +								Z_STRLEN_P(zendlval)--;  							}  						}  						*t++ = (char) strtol(octal_buf, NULL, 8); @@ -990,9 +988,9 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo  	*t = 0;  	if (SCNG(output_filter)) {  		size_t sz = 0; -		s = zendlval->value.str.val; -		SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)s, (size_t)zendlval->value.str.len TSRMLS_CC); -		zendlval->value.str.len = sz; +		s = Z_STRVAL_P(zendlval); +		SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval) TSRMLS_CC); +		Z_STRLEN_P(zendlval) = sz;  		efree(s);  	}  } @@ -1006,7 +1004,7 @@ restart:  yymore_restart: -#line 1010 "Zend/zend_language_scanner.c" +#line 1008 "Zend/zend_language_scanner.c"  {  	YYCTYPE yych;  	unsigned int yyaccept = 0; @@ -1105,7 +1103,7 @@ yyc_INITIAL:  yy3:  		YYDEBUG(3, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1807 "Zend/zend_language_scanner.l" +#line 1745 "Zend/zend_language_scanner.l"  		{  	if (YYCURSOR > YYLIMIT) {  		return 0; @@ -1152,20 +1150,20 @@ inline_html:  	if (SCNG(output_filter)) {  		int readsize;  		size_t sz = 0; -		readsize = SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); -		zendlval->value.str.len = sz; +		readsize = SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); +		Z_STRLEN_P(zendlval) = sz;  		if (readsize < yyleng) {  			yyless(readsize);  		}  	} else { -	  zendlval->value.str.val = (char *) estrndup(yytext, yyleng); -	  zendlval->value.str.len = yyleng; +	  Z_STRVAL_P(zendlval) = (char *) estrndup(yytext, yyleng); +	  Z_STRLEN_P(zendlval) = yyleng;  	}  	zendlval->type = IS_STRING;  	HANDLE_NEWLINES(yytext, yyleng);  	return T_INLINE_HTML;  } -#line 1169 "Zend/zend_language_scanner.c" +#line 1167 "Zend/zend_language_scanner.c"  yy4:  		YYDEBUG(4, *YYCURSOR);  		yych = *++YYCURSOR; @@ -1183,38 +1181,34 @@ yy5:  yy6:  		YYDEBUG(6, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1795 "Zend/zend_language_scanner.l" +#line 1735 "Zend/zend_language_scanner.l"  		{  	if (CG(short_tags)) { -		zendlval->value.str.val = yytext; /* no copying - intentional */ -		zendlval->value.str.len = yyleng; -		zendlval->type = IS_STRING; +		ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  		BEGIN(ST_IN_SCRIPTING);  		return T_OPEN_TAG;  	} else {  		goto inline_char_handler;  	}  } -#line 1199 "Zend/zend_language_scanner.c" +#line 1195 "Zend/zend_language_scanner.c"  yy7:  		YYDEBUG(7, *YYCURSOR);  		++YYCURSOR;  		if ((yych = *YYCURSOR) == '=') goto yy43;  		YYDEBUG(8, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1772 "Zend/zend_language_scanner.l" +#line 1716 "Zend/zend_language_scanner.l"  		{  	if (CG(asp_tags)) { -		zendlval->value.str.val = yytext; /* no copying - intentional */ -		zendlval->value.str.len = yyleng; -		zendlval->type = IS_STRING; +		ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  		BEGIN(ST_IN_SCRIPTING);  		return T_OPEN_TAG;  	} else {  		goto inline_char_handler;  	}  } -#line 1218 "Zend/zend_language_scanner.c" +#line 1212 "Zend/zend_language_scanner.c"  yy9:  		YYDEBUG(9, *YYCURSOR);  		yych = *++YYCURSOR; @@ -1400,7 +1394,7 @@ yy35:  		++YYCURSOR;  		YYDEBUG(38, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1732 "Zend/zend_language_scanner.l" +#line 1682 "Zend/zend_language_scanner.l"  		{  	YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1)); @@ -1411,13 +1405,11 @@ yy35:  	}  	HANDLE_NEWLINES(yytext, yyleng); -	zendlval->value.str.val = yytext; /* no copying - intentional */ -	zendlval->value.str.len = yyleng; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  	BEGIN(ST_IN_SCRIPTING);  	return T_OPEN_TAG;  } -#line 1421 "Zend/zend_language_scanner.c" +#line 1413 "Zend/zend_language_scanner.c"  yy39:  		YYDEBUG(39, *YYCURSOR);  		yych = *++YYCURSOR; @@ -1444,33 +1436,29 @@ yy43:  		++YYCURSOR;  		YYDEBUG(44, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1750 "Zend/zend_language_scanner.l" +#line 1698 "Zend/zend_language_scanner.l"  		{  	if (CG(asp_tags)) { -		zendlval->value.str.val = yytext; /* no copying - intentional */ -		zendlval->value.str.len = yyleng; -		zendlval->type = IS_STRING; +		ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  		BEGIN(ST_IN_SCRIPTING);  		return T_OPEN_TAG_WITH_ECHO;  	} else {  		goto inline_char_handler;  	}  } -#line 1460 "Zend/zend_language_scanner.c" +#line 1450 "Zend/zend_language_scanner.c"  yy45:  		YYDEBUG(45, *YYCURSOR);  		++YYCURSOR;  		YYDEBUG(46, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1763 "Zend/zend_language_scanner.l" +#line 1709 "Zend/zend_language_scanner.l"  		{ -	zendlval->value.str.val = yytext; /* no copying - intentional */ -	zendlval->value.str.len = yyleng; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  	BEGIN(ST_IN_SCRIPTING);  	return T_OPEN_TAG_WITH_ECHO;  } -#line 1474 "Zend/zend_language_scanner.c" +#line 1462 "Zend/zend_language_scanner.c"  yy47:  		YYDEBUG(47, *YYCURSOR);  		yych = *++YYCURSOR; @@ -1497,16 +1485,14 @@ yy50:  yy51:  		YYDEBUG(51, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1785 "Zend/zend_language_scanner.l" +#line 1727 "Zend/zend_language_scanner.l"  		{ -	zendlval->value.str.val = yytext; /* no copying - intentional */ -	zendlval->value.str.len = yyleng; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  	HANDLE_NEWLINE(yytext[yyleng-1]);  	BEGIN(ST_IN_SCRIPTING);  	return T_OPEN_TAG;  } -#line 1510 "Zend/zend_language_scanner.c" +#line 1496 "Zend/zend_language_scanner.c"  yy52:  		YYDEBUG(52, *YYCURSOR);  		++YYCURSOR; @@ -1577,7 +1563,7 @@ yyc_ST_BACKQUOTE:  yy56:  		YYDEBUG(56, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 2258 "Zend/zend_language_scanner.l" +#line 2190 "Zend/zend_language_scanner.l"  		{  	if (YYCURSOR > YYLIMIT) {  		return 0; @@ -1618,7 +1604,7 @@ yy56:  	zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC);  	return T_ENCAPSED_AND_WHITESPACE;  } -#line 1622 "Zend/zend_language_scanner.c" +#line 1608 "Zend/zend_language_scanner.c"  yy57:  		YYDEBUG(57, *YYCURSOR);  		yych = *++YYCURSOR; @@ -1629,12 +1615,12 @@ yy58:  		++YYCURSOR;  		YYDEBUG(59, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 2202 "Zend/zend_language_scanner.l" +#line 2134 "Zend/zend_language_scanner.l"  		{  	BEGIN(ST_IN_SCRIPTING);  	return '`';  } -#line 1638 "Zend/zend_language_scanner.c" +#line 1624 "Zend/zend_language_scanner.c"  yy60:  		YYDEBUG(60, *YYCURSOR);  		yych = *++YYCURSOR; @@ -1644,14 +1630,14 @@ yy61:  		++YYCURSOR;  		YYDEBUG(62, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 2189 "Zend/zend_language_scanner.l" +#line 2121 "Zend/zend_language_scanner.l"  		{ -	zendlval->value.lval = (long) '{'; +	Z_LVAL_P(zendlval) = (long) '{';  	yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);  	yyless(1);  	return T_CURLY_OPEN;  } -#line 1655 "Zend/zend_language_scanner.c" +#line 1641 "Zend/zend_language_scanner.c"  yy63:  		YYDEBUG(63, *YYCURSOR);  		yyaccept = 0; @@ -1667,24 +1653,24 @@ yy63:  yy65:  		YYDEBUG(65, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1889 "Zend/zend_language_scanner.l" +#line 1827 "Zend/zend_language_scanner.l"  		{  	zend_copy_value(zendlval, (yytext+1), (yyleng-1));  	zendlval->type = IS_STRING;  	return T_VARIABLE;  } -#line 1677 "Zend/zend_language_scanner.c" +#line 1663 "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 1461 "Zend/zend_language_scanner.l"  		{  	yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);  	return T_DOLLAR_OPEN_CURLY_BRACES;  } -#line 1688 "Zend/zend_language_scanner.c" +#line 1674 "Zend/zend_language_scanner.c"  yy68:  		YYDEBUG(68, *YYCURSOR);  		yych = *++YYCURSOR; @@ -1698,7 +1684,7 @@ yy70:  		++YYCURSOR;  		YYDEBUG(71, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1881 "Zend/zend_language_scanner.l" +#line 1819 "Zend/zend_language_scanner.l"  		{  	yyless(yyleng - 1);  	yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -1706,7 +1692,7 @@ yy70:  	zendlval->type = IS_STRING;  	return T_VARIABLE;  } -#line 1710 "Zend/zend_language_scanner.c" +#line 1696 "Zend/zend_language_scanner.c"  yy72:  		YYDEBUG(72, *YYCURSOR);  		yych = *++YYCURSOR; @@ -1724,7 +1710,7 @@ yy73:  		++YYCURSOR;  		YYDEBUG(74, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1871 "Zend/zend_language_scanner.l" +#line 1809 "Zend/zend_language_scanner.l"  		{  	yyless(yyleng - 3);  	yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -1732,7 +1718,7 @@ yy73:  	zendlval->type = IS_STRING;  	return T_VARIABLE;  } -#line 1736 "Zend/zend_language_scanner.c" +#line 1722 "Zend/zend_language_scanner.c"  	}  /* *********************************** */  yyc_ST_DOUBLE_QUOTES: @@ -1800,7 +1786,7 @@ yy77:  yy78:  		YYDEBUG(78, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 2208 "Zend/zend_language_scanner.l" +#line 2140 "Zend/zend_language_scanner.l"  		{  	if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {  		YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1849,7 +1835,7 @@ double_quotes_scan_done:  	zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC);  	return T_ENCAPSED_AND_WHITESPACE;  } -#line 1853 "Zend/zend_language_scanner.c" +#line 1839 "Zend/zend_language_scanner.c"  yy79:  		YYDEBUG(79, *YYCURSOR);  		yych = *++YYCURSOR; @@ -1860,12 +1846,12 @@ yy80:  		++YYCURSOR;  		YYDEBUG(81, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 2197 "Zend/zend_language_scanner.l" +#line 2129 "Zend/zend_language_scanner.l"  		{  	BEGIN(ST_IN_SCRIPTING);  	return '"';  } -#line 1869 "Zend/zend_language_scanner.c" +#line 1855 "Zend/zend_language_scanner.c"  yy82:  		YYDEBUG(82, *YYCURSOR);  		yych = *++YYCURSOR; @@ -1875,14 +1861,14 @@ yy83:  		++YYCURSOR;  		YYDEBUG(84, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 2189 "Zend/zend_language_scanner.l" +#line 2121 "Zend/zend_language_scanner.l"  		{ -	zendlval->value.lval = (long) '{'; +	Z_LVAL_P(zendlval) = (long) '{';  	yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);  	yyless(1);  	return T_CURLY_OPEN;  } -#line 1886 "Zend/zend_language_scanner.c" +#line 1872 "Zend/zend_language_scanner.c"  yy85:  		YYDEBUG(85, *YYCURSOR);  		yyaccept = 0; @@ -1898,24 +1884,24 @@ yy85:  yy87:  		YYDEBUG(87, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1889 "Zend/zend_language_scanner.l" +#line 1827 "Zend/zend_language_scanner.l"  		{  	zend_copy_value(zendlval, (yytext+1), (yyleng-1));  	zendlval->type = IS_STRING;  	return T_VARIABLE;  } -#line 1908 "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 1461 "Zend/zend_language_scanner.l"  		{  	yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);  	return T_DOLLAR_OPEN_CURLY_BRACES;  } -#line 1919 "Zend/zend_language_scanner.c" +#line 1905 "Zend/zend_language_scanner.c"  yy90:  		YYDEBUG(90, *YYCURSOR);  		yych = *++YYCURSOR; @@ -1929,7 +1915,7 @@ yy92:  		++YYCURSOR;  		YYDEBUG(93, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1881 "Zend/zend_language_scanner.l" +#line 1819 "Zend/zend_language_scanner.l"  		{  	yyless(yyleng - 1);  	yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -1937,7 +1923,7 @@ yy92:  	zendlval->type = IS_STRING;  	return T_VARIABLE;  } -#line 1941 "Zend/zend_language_scanner.c" +#line 1927 "Zend/zend_language_scanner.c"  yy94:  		YYDEBUG(94, *YYCURSOR);  		yych = *++YYCURSOR; @@ -1955,7 +1941,7 @@ yy95:  		++YYCURSOR;  		YYDEBUG(96, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1871 "Zend/zend_language_scanner.l" +#line 1809 "Zend/zend_language_scanner.l"  		{  	yyless(yyleng - 3);  	yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -1963,7 +1949,7 @@ yy95:  	zendlval->type = IS_STRING;  	return T_VARIABLE;  } -#line 1967 "Zend/zend_language_scanner.c" +#line 1953 "Zend/zend_language_scanner.c"  	}  /* *********************************** */  yyc_ST_END_HEREDOC: @@ -1974,7 +1960,7 @@ yyc_ST_END_HEREDOC:  	++YYCURSOR;  	YYDEBUG(100, *YYCURSOR);  	yyleng = YYCURSOR - SCNG(yy_text); -#line 2175 "Zend/zend_language_scanner.l" +#line 2107 "Zend/zend_language_scanner.l"  	{  	zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1987,7 +1973,7 @@ yyc_ST_END_HEREDOC:  	BEGIN(ST_IN_SCRIPTING);  	return T_END_HEREDOC;  } -#line 1991 "Zend/zend_language_scanner.c" +#line 1977 "Zend/zend_language_scanner.c"  /* *********************************** */  yyc_ST_HEREDOC:  	{ @@ -2049,7 +2035,7 @@ yy103:  yy104:  		YYDEBUG(104, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 2300 "Zend/zend_language_scanner.l" +#line 2232 "Zend/zend_language_scanner.l"  		{  	int newline = 0; @@ -2122,7 +2108,7 @@ heredoc_scan_done:  	zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC);  	return T_ENCAPSED_AND_WHITESPACE;  } -#line 2126 "Zend/zend_language_scanner.c" +#line 2112 "Zend/zend_language_scanner.c"  yy105:  		YYDEBUG(105, *YYCURSOR);  		yych = *++YYCURSOR; @@ -2137,14 +2123,14 @@ yy107:  		++YYCURSOR;  		YYDEBUG(108, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 2189 "Zend/zend_language_scanner.l" +#line 2121 "Zend/zend_language_scanner.l"  		{ -	zendlval->value.lval = (long) '{'; +	Z_LVAL_P(zendlval) = (long) '{';  	yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);  	yyless(1);  	return T_CURLY_OPEN;  } -#line 2148 "Zend/zend_language_scanner.c" +#line 2134 "Zend/zend_language_scanner.c"  yy109:  		YYDEBUG(109, *YYCURSOR);  		yyaccept = 0; @@ -2160,24 +2146,24 @@ yy109:  yy111:  		YYDEBUG(111, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1889 "Zend/zend_language_scanner.l" +#line 1827 "Zend/zend_language_scanner.l"  		{  	zend_copy_value(zendlval, (yytext+1), (yyleng-1));  	zendlval->type = IS_STRING;  	return T_VARIABLE;  } -#line 2170 "Zend/zend_language_scanner.c" +#line 2156 "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 1461 "Zend/zend_language_scanner.l"  		{  	yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);  	return T_DOLLAR_OPEN_CURLY_BRACES;  } -#line 2181 "Zend/zend_language_scanner.c" +#line 2167 "Zend/zend_language_scanner.c"  yy114:  		YYDEBUG(114, *YYCURSOR);  		yych = *++YYCURSOR; @@ -2191,7 +2177,7 @@ yy116:  		++YYCURSOR;  		YYDEBUG(117, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1881 "Zend/zend_language_scanner.l" +#line 1819 "Zend/zend_language_scanner.l"  		{  	yyless(yyleng - 1);  	yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2199,7 +2185,7 @@ yy116:  	zendlval->type = IS_STRING;  	return T_VARIABLE;  } -#line 2203 "Zend/zend_language_scanner.c" +#line 2189 "Zend/zend_language_scanner.c"  yy118:  		YYDEBUG(118, *YYCURSOR);  		yych = *++YYCURSOR; @@ -2217,7 +2203,7 @@ yy119:  		++YYCURSOR;  		YYDEBUG(120, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1871 "Zend/zend_language_scanner.l" +#line 1809 "Zend/zend_language_scanner.l"  		{  	yyless(yyleng - 3);  	yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2225,7 +2211,7 @@ yy119:  	zendlval->type = IS_STRING;  	return T_VARIABLE;  } -#line 2229 "Zend/zend_language_scanner.c" +#line 2215 "Zend/zend_language_scanner.c"  	}  /* *********************************** */  yyc_ST_IN_SCRIPTING: @@ -2408,13 +2394,13 @@ yy123:  yy124:  		YYDEBUG(124, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1912 "Zend/zend_language_scanner.l" +#line 1850 "Zend/zend_language_scanner.l"  		{  	zend_copy_value(zendlval, yytext, yyleng);  	zendlval->type = IS_STRING;  	return T_STRING;  } -#line 2418 "Zend/zend_language_scanner.c" +#line 2404 "Zend/zend_language_scanner.c"  yy125:  		YYDEBUG(125, *YYCURSOR);  		yych = *++YYCURSOR; @@ -2646,11 +2632,11 @@ yy138:  yy139:  		YYDEBUG(139, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1454 "Zend/zend_language_scanner.l" +#line 1450 "Zend/zend_language_scanner.l"  		{  	return yytext[0];  } -#line 2654 "Zend/zend_language_scanner.c" +#line 2640 "Zend/zend_language_scanner.c"  yy140:  		YYDEBUG(140, *YYCURSOR);  		++YYCURSOR; @@ -2659,15 +2645,13 @@ yy140:  yy141:  		YYDEBUG(141, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1185 "Zend/zend_language_scanner.l" +#line 1183 "Zend/zend_language_scanner.l"  		{ -	zendlval->value.str.val = yytext; /* no copying - intentional */ -	zendlval->value.str.len = yyleng; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  	HANDLE_NEWLINES(yytext, yyleng);  	return T_WHITESPACE;  } -#line 2671 "Zend/zend_language_scanner.c" +#line 2655 "Zend/zend_language_scanner.c"  yy142:  		YYDEBUG(142, *YYCURSOR);  		yych = *++YYCURSOR; @@ -2678,11 +2662,11 @@ yy143:  		++YYCURSOR;  		YYDEBUG(144, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1214 "Zend/zend_language_scanner.l" +#line 1210 "Zend/zend_language_scanner.l"  		{  	return T_NS_SEPARATOR;  } -#line 2686 "Zend/zend_language_scanner.c" +#line 2670 "Zend/zend_language_scanner.c"  yy145:  		YYDEBUG(145, *YYCURSOR);  		yych = *++YYCURSOR; @@ -2910,18 +2894,18 @@ yy168:  		++YYCURSOR;  		YYDEBUG(169, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1459 "Zend/zend_language_scanner.l" +#line 1455 "Zend/zend_language_scanner.l"  		{  	yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);  	return '{';  } -#line 2919 "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 1467 "Zend/zend_language_scanner.l"  		{  	RESET_DOC_COMMENT();  	if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2929,7 +2913,7 @@ yy170:  	}  	return '}';  } -#line 2933 "Zend/zend_language_scanner.c" +#line 2917 "Zend/zend_language_scanner.c"  yy172:  		YYDEBUG(172, *YYCURSOR);  		yyaccept = 2; @@ -2957,18 +2941,18 @@ yy172:  yy173:  		YYDEBUG(173, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1522 "Zend/zend_language_scanner.l" +#line 1517 "Zend/zend_language_scanner.l"  		{  	if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ -		zendlval->value.lval = strtol(yytext, NULL, 0); +		Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0);  	} else {  		errno = 0; -		zendlval->value.lval = strtol(yytext, NULL, 0); +		Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0);  		if (errno == ERANGE) { /* Overflow */  			if (yytext[0] == '0') { /* octal overflow */ -				zendlval->value.dval = zend_oct_strtod(yytext, NULL); +				Z_DVAL_P(zendlval) = zend_oct_strtod(yytext, NULL);  			} else { -				zendlval->value.dval = zend_strtod(yytext, NULL); +				Z_DVAL_P(zendlval) = zend_strtod(yytext, NULL);  			}  			zendlval->type = IS_DOUBLE;  			return T_DNUMBER; @@ -2978,7 +2962,7 @@ yy173:  	zendlval->type = IS_LONG;  	return T_LNUMBER;  } -#line 2982 "Zend/zend_language_scanner.c" +#line 2966 "Zend/zend_language_scanner.c"  yy174:  		YYDEBUG(174, *YYCURSOR);  		yyaccept = 2; @@ -3006,7 +2990,7 @@ yy176:  yy177:  		YYDEBUG(177, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1919 "Zend/zend_language_scanner.l" +#line 1857 "Zend/zend_language_scanner.l"  		{  	while (YYCURSOR < YYLIMIT) {  		switch (*YYCURSOR++) { @@ -3040,14 +3024,14 @@ yy177:  	return T_COMMENT;  } -#line 3044 "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 2010 "Zend/zend_language_scanner.l" +#line 1944 "Zend/zend_language_scanner.l"  		{  	register char *s, *t;  	char *end; @@ -3073,13 +3057,11 @@ yy179:  		}  	} -	zendlval->value.str.val = estrndup(yytext+bprefix+1, yyleng-bprefix-2); -	zendlval->value.str.len = yyleng-bprefix-2; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2, 1);  	/* convert escape sequences */ -	s = t = zendlval->value.str.val; -	end = s+zendlval->value.str.len; +	s = t = Z_STRVAL_P(zendlval); +	end = s+Z_STRLEN_P(zendlval);  	while (s<end) {  		if (*s=='\\') {  			s++; @@ -3088,7 +3070,7 @@ yy179:  				case '\\':  				case '\'':  					*t++ = *s; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				default:  					*t++ = '\\'; @@ -3108,21 +3090,21 @@ yy179:  	if (SCNG(output_filter)) {  		size_t sz = 0; -		s = zendlval->value.str.val; -		SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)s, (size_t)zendlval->value.str.len TSRMLS_CC); -		zendlval->value.str.len = sz; +		s = Z_STRVAL_P(zendlval); +		SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval) TSRMLS_CC); +		Z_STRLEN_P(zendlval) = sz;  		efree(s);  	}  	return T_CONSTANT_ENCAPSED_STRING;  } -#line 3119 "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 2079 "Zend/zend_language_scanner.l" +#line 2011 "Zend/zend_language_scanner.l"  		{  	int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3163,24 +3145,24 @@ yy181:  	BEGIN(ST_DOUBLE_QUOTES);  	return '"';  } -#line 3167 "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 2169 "Zend/zend_language_scanner.l" +#line 2101 "Zend/zend_language_scanner.l"  		{  	BEGIN(ST_BACKQUOTE);  	return '`';  } -#line 3178 "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 2432 "Zend/zend_language_scanner.l" +#line 2364 "Zend/zend_language_scanner.l"  		{  	if (YYCURSOR > YYLIMIT) {  		return 0; @@ -3189,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 3193 "Zend/zend_language_scanner.c" +#line 3175 "Zend/zend_language_scanner.c"  yy186:  		YYDEBUG(186, *YYCURSOR);  		++YYCURSOR; @@ -3216,13 +3198,12 @@ yy188:  yy190:  		YYDEBUG(190, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1587 "Zend/zend_language_scanner.l" +#line 1576 "Zend/zend_language_scanner.l"  		{ -	zendlval->value.dval = zend_strtod(yytext, NULL); -	zendlval->type = IS_DOUBLE; +	ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL));  	return T_DNUMBER;  } -#line 3226 "Zend/zend_language_scanner.c" +#line 3207 "Zend/zend_language_scanner.c"  yy191:  		YYDEBUG(191, *YYCURSOR);  		yyaccept = 2; @@ -3314,7 +3295,7 @@ yy200:  		}  		YYDEBUG(202, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1497 "Zend/zend_language_scanner.l" +#line 1493 "Zend/zend_language_scanner.l"  		{  	char *bin = yytext + 2; /* Skip "0b" */  	int len = yyleng - 2; @@ -3327,19 +3308,18 @@ yy200:  	if (len < SIZEOF_LONG * 8) {  		if (len == 0) { -			zendlval->value.lval = 0; +			Z_LVAL_P(zendlval) = 0;  		} else { -			zendlval->value.lval = strtol(bin, NULL, 2); +			Z_LVAL_P(zendlval) = strtol(bin, NULL, 2);  		}  		zendlval->type = IS_LONG;  		return T_LNUMBER;  	} else { -		zendlval->value.dval = zend_bin_strtod(bin, NULL); -		zendlval->type = IS_DOUBLE; +		ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, NULL));  		return T_DNUMBER;  	}  } -#line 3343 "Zend/zend_language_scanner.c" +#line 3323 "Zend/zend_language_scanner.c"  yy203:  		YYDEBUG(203, *YYCURSOR);  		++YYCURSOR; @@ -3351,7 +3331,7 @@ yy203:  		}  		YYDEBUG(205, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1543 "Zend/zend_language_scanner.l" +#line 1538 "Zend/zend_language_scanner.l"  		{  	char *hex = yytext + 2; /* Skip "0x" */  	int len = yyleng - 2; @@ -3364,19 +3344,18 @@ yy203:  	if (len < SIZEOF_LONG * 2 || (len == SIZEOF_LONG * 2 && *hex <= '7')) {  		if (len == 0) { -			zendlval->value.lval = 0; +			Z_LVAL_P(zendlval) = 0;  		} else { -			zendlval->value.lval = strtol(hex, NULL, 16); +			Z_LVAL_P(zendlval) = strtol(hex, NULL, 16);  		}  		zendlval->type = IS_LONG;  		return T_LNUMBER;  	} else { -		zendlval->value.dval = zend_hex_strtod(hex, NULL); -		zendlval->type = IS_DOUBLE; +		ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, NULL));  		return T_DNUMBER;  	}  } -#line 3380 "Zend/zend_language_scanner.c" +#line 3359 "Zend/zend_language_scanner.c"  yy206:  		YYDEBUG(206, *YYCURSOR);  		++YYCURSOR; @@ -3385,15 +3364,13 @@ yy206:  yy207:  		YYDEBUG(207, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1987 "Zend/zend_language_scanner.l" +#line 1925 "Zend/zend_language_scanner.l"  		{ -	zendlval->value.str.val = yytext; /* no copying - intentional */ -	zendlval->value.str.len = yyleng; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  	BEGIN(INITIAL);  	return T_CLOSE_TAG;  /* implicit ';' at php-end tag */  } -#line 3397 "Zend/zend_language_scanner.c" +#line 3374 "Zend/zend_language_scanner.c"  yy208:  		YYDEBUG(208, *YYCURSOR);  		yych = *++YYCURSOR; @@ -3427,13 +3404,13 @@ yy210:  yy212:  		YYDEBUG(212, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1889 "Zend/zend_language_scanner.l" +#line 1827 "Zend/zend_language_scanner.l"  		{  	zend_copy_value(zendlval, (yytext+1), (yyleng-1));  	zendlval->type = IS_STRING;  	return T_VARIABLE;  } -#line 3437 "Zend/zend_language_scanner.c" +#line 3414 "Zend/zend_language_scanner.c"  yy213:  		YYDEBUG(213, *YYCURSOR);  		yych = *++YYCURSOR; @@ -3447,11 +3424,11 @@ yy214:  		}  		YYDEBUG(215, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1442 "Zend/zend_language_scanner.l" +#line 1438 "Zend/zend_language_scanner.l"  		{  	return T_LOGICAL_XOR;  } -#line 3455 "Zend/zend_language_scanner.c" +#line 3432 "Zend/zend_language_scanner.c"  yy216:  		YYDEBUG(216, *YYCURSOR);  		++YYCURSOR; @@ -3460,61 +3437,61 @@ yy216:  		}  		YYDEBUG(217, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1434 "Zend/zend_language_scanner.l" +#line 1430 "Zend/zend_language_scanner.l"  		{  	return T_LOGICAL_OR;  } -#line 3468 "Zend/zend_language_scanner.c" +#line 3445 "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 1418 "Zend/zend_language_scanner.l"  		{  	return T_XOR_EQUAL;  } -#line 3478 "Zend/zend_language_scanner.c" +#line 3455 "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 1422 "Zend/zend_language_scanner.l"  		{  	return T_BOOLEAN_OR;  } -#line 3488 "Zend/zend_language_scanner.c" +#line 3465 "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 1414 "Zend/zend_language_scanner.l"  		{  	return T_OR_EQUAL;  } -#line 3498 "Zend/zend_language_scanner.c" +#line 3475 "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 1426 "Zend/zend_language_scanner.l"  		{  	return T_BOOLEAN_AND;  } -#line 3508 "Zend/zend_language_scanner.c" +#line 3485 "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 1410 "Zend/zend_language_scanner.l"  		{  	return T_AND_EQUAL;  } -#line 3518 "Zend/zend_language_scanner.c" +#line 3495 "Zend/zend_language_scanner.c"  yy228:  		YYDEBUG(228, *YYCURSOR);  		++YYCURSOR; @@ -3523,30 +3500,28 @@ yy228:  yy229:  		YYDEBUG(229, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1996 "Zend/zend_language_scanner.l" +#line 1932 "Zend/zend_language_scanner.l"  		{  	if (CG(asp_tags)) {  		BEGIN(INITIAL); -		zendlval->value.str.len = yyleng; -		zendlval->type = IS_STRING; -		zendlval->value.str.val = yytext; /* no copying - intentional */ +		ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  		return T_CLOSE_TAG;  /* implicit ';' at php-end tag */  	} else {  		yyless(1);  		return yytext[0];  	}  } -#line 3540 "Zend/zend_language_scanner.c" +#line 3515 "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 1398 "Zend/zend_language_scanner.l"  		{  	return T_MOD_EQUAL;  } -#line 3550 "Zend/zend_language_scanner.c" +#line 3525 "Zend/zend_language_scanner.c"  yy232:  		YYDEBUG(232, *YYCURSOR);  		yych = *++YYCURSOR; @@ -3577,11 +3552,11 @@ yy236:  		++YYCURSOR;  		YYDEBUG(237, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1398 "Zend/zend_language_scanner.l" +#line 1394 "Zend/zend_language_scanner.l"  		{  	return T_CONCAT_EQUAL;  } -#line 3585 "Zend/zend_language_scanner.c" +#line 3560 "Zend/zend_language_scanner.c"  yy238:  		YYDEBUG(238, *YYCURSOR);  		yyaccept = 4; @@ -3590,7 +3565,7 @@ yy238:  yy239:  		YYDEBUG(239, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1953 "Zend/zend_language_scanner.l" +#line 1891 "Zend/zend_language_scanner.l"  		{  	int doc_com; @@ -3624,7 +3599,7 @@ yy239:  	return T_COMMENT;  } -#line 3628 "Zend/zend_language_scanner.c" +#line 3603 "Zend/zend_language_scanner.c"  yy240:  		YYDEBUG(240, *YYCURSOR);  		yych = *++YYCURSOR; @@ -3634,11 +3609,11 @@ yy241:  		++YYCURSOR;  		YYDEBUG(242, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1394 "Zend/zend_language_scanner.l" +#line 1390 "Zend/zend_language_scanner.l"  		{  	return T_DIV_EQUAL;  } -#line 3642 "Zend/zend_language_scanner.c" +#line 3617 "Zend/zend_language_scanner.c"  yy243:  		YYDEBUG(243, *YYCURSOR);  		yych = *++YYCURSOR; @@ -3661,42 +3636,42 @@ yy246:  		++YYCURSOR;  		YYDEBUG(247, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1390 "Zend/zend_language_scanner.l" +#line 1386 "Zend/zend_language_scanner.l"  		{  	return T_MUL_EQUAL;  } -#line 3669 "Zend/zend_language_scanner.c" +#line 3644 "Zend/zend_language_scanner.c"  yy248:  		YYDEBUG(248, *YYCURSOR);  		++YYCURSOR;  		if ((yych = *YYCURSOR) == '=') goto yy252;  		YYDEBUG(249, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1450 "Zend/zend_language_scanner.l" +#line 1446 "Zend/zend_language_scanner.l"  		{  	return T_SR;  } -#line 3680 "Zend/zend_language_scanner.c" +#line 3655 "Zend/zend_language_scanner.c"  yy250:  		YYDEBUG(250, *YYCURSOR);  		++YYCURSOR;  		YYDEBUG(251, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1378 "Zend/zend_language_scanner.l" +#line 1374 "Zend/zend_language_scanner.l"  		{  	return T_IS_GREATER_OR_EQUAL;  } -#line 3690 "Zend/zend_language_scanner.c" +#line 3665 "Zend/zend_language_scanner.c"  yy252:  		YYDEBUG(252, *YYCURSOR);  		++YYCURSOR;  		YYDEBUG(253, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1410 "Zend/zend_language_scanner.l" +#line 1406 "Zend/zend_language_scanner.l"  		{  	return T_SR_EQUAL;  } -#line 3700 "Zend/zend_language_scanner.c" +#line 3675 "Zend/zend_language_scanner.c"  yy254:  		YYDEBUG(254, *YYCURSOR);  		yyaccept = 5; @@ -3707,11 +3682,11 @@ yy254:  yy255:  		YYDEBUG(255, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1446 "Zend/zend_language_scanner.l" +#line 1442 "Zend/zend_language_scanner.l"  		{  	return T_SL;  } -#line 3715 "Zend/zend_language_scanner.c" +#line 3690 "Zend/zend_language_scanner.c"  yy256:  		YYDEBUG(256, *YYCURSOR);  		yych = *++YYCURSOR; @@ -3723,22 +3698,22 @@ yy257:  		++YYCURSOR;  		YYDEBUG(258, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1374 "Zend/zend_language_scanner.l" +#line 1370 "Zend/zend_language_scanner.l"  		{  	return T_IS_SMALLER_OR_EQUAL;  } -#line 3731 "Zend/zend_language_scanner.c" +#line 3706 "Zend/zend_language_scanner.c"  yy259:  		YYDEBUG(259, *YYCURSOR);  		++YYCURSOR;  yy260:  		YYDEBUG(260, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1370 "Zend/zend_language_scanner.l" +#line 1366 "Zend/zend_language_scanner.l"  		{  	return T_IS_NOT_EQUAL;  } -#line 3742 "Zend/zend_language_scanner.c" +#line 3717 "Zend/zend_language_scanner.c"  yy261:  		YYDEBUG(261, *YYCURSOR);  		yych = *++YYCURSOR; @@ -3789,11 +3764,11 @@ yy268:  		++YYCURSOR;  		YYDEBUG(269, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1406 "Zend/zend_language_scanner.l" +#line 1402 "Zend/zend_language_scanner.l"  		{  	return T_SL_EQUAL;  } -#line 3797 "Zend/zend_language_scanner.c" +#line 3772 "Zend/zend_language_scanner.c"  yy270:  		YYDEBUG(270, *YYCURSOR);  		++YYCURSOR; @@ -3898,7 +3873,7 @@ yy279:  yy280:  		YYDEBUG(280, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 2121 "Zend/zend_language_scanner.l" +#line 2053 "Zend/zend_language_scanner.l"  		{  	char *s;  	int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -3945,7 +3920,7 @@ yy280:  	return T_START_HEREDOC;  } -#line 3949 "Zend/zend_language_scanner.c" +#line 3924 "Zend/zend_language_scanner.c"  yy281:  		YYDEBUG(281, *YYCURSOR);  		yych = *++YYCURSOR; @@ -3985,31 +3960,31 @@ yy284:  		++YYCURSOR;  		YYDEBUG(286, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1362 "Zend/zend_language_scanner.l" +#line 1358 "Zend/zend_language_scanner.l"  		{  	return T_IS_NOT_IDENTICAL;  } -#line 3993 "Zend/zend_language_scanner.c" +#line 3968 "Zend/zend_language_scanner.c"  yy287:  		YYDEBUG(287, *YYCURSOR);  		++YYCURSOR;  		YYDEBUG(288, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1382 "Zend/zend_language_scanner.l" +#line 1378 "Zend/zend_language_scanner.l"  		{  	return T_PLUS_EQUAL;  } -#line 4003 "Zend/zend_language_scanner.c" +#line 3978 "Zend/zend_language_scanner.c"  yy289:  		YYDEBUG(289, *YYCURSOR);  		++YYCURSOR;  		YYDEBUG(290, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1350 "Zend/zend_language_scanner.l" +#line 1346 "Zend/zend_language_scanner.l"  		{  	return T_INC;  } -#line 4013 "Zend/zend_language_scanner.c" +#line 3988 "Zend/zend_language_scanner.c"  yy291:  		YYDEBUG(291, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4028,42 +4003,42 @@ yy293:  		}  		YYDEBUG(294, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1338 "Zend/zend_language_scanner.l" +#line 1334 "Zend/zend_language_scanner.l"  		{  	return T_LIST;  } -#line 4036 "Zend/zend_language_scanner.c" +#line 4011 "Zend/zend_language_scanner.c"  yy295:  		YYDEBUG(295, *YYCURSOR);  		++YYCURSOR;  		if ((yych = *YYCURSOR) == '=') goto yy299;  		YYDEBUG(296, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1366 "Zend/zend_language_scanner.l" +#line 1362 "Zend/zend_language_scanner.l"  		{  	return T_IS_EQUAL;  } -#line 4047 "Zend/zend_language_scanner.c" +#line 4022 "Zend/zend_language_scanner.c"  yy297:  		YYDEBUG(297, *YYCURSOR);  		++YYCURSOR;  		YYDEBUG(298, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1334 "Zend/zend_language_scanner.l" +#line 1330 "Zend/zend_language_scanner.l"  		{  	return T_DOUBLE_ARROW;  } -#line 4057 "Zend/zend_language_scanner.c" +#line 4032 "Zend/zend_language_scanner.c"  yy299:  		YYDEBUG(299, *YYCURSOR);  		++YYCURSOR;  		YYDEBUG(300, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1358 "Zend/zend_language_scanner.l" +#line 1354 "Zend/zend_language_scanner.l"  		{  	return T_IS_IDENTICAL;  } -#line 4067 "Zend/zend_language_scanner.c" +#line 4042 "Zend/zend_language_scanner.c"  yy301:  		YYDEBUG(301, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4193,7 +4168,7 @@ yy317:  		}  		YYDEBUG(320, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1722 "Zend/zend_language_scanner.l" +#line 1672 "Zend/zend_language_scanner.l"  		{  	if (CG(current_namespace)) {  		*zendlval = *CG(current_namespace); @@ -4203,7 +4178,7 @@ yy317:  	}  	return T_NS_C;  } -#line 4207 "Zend/zend_language_scanner.c" +#line 4182 "Zend/zend_language_scanner.c"  yy321:  		YYDEBUG(321, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4223,7 +4198,7 @@ yy322:  		}  		YYDEBUG(325, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1695 "Zend/zend_language_scanner.l" +#line 1647 "Zend/zend_language_scanner.l"  		{  	char *filename = zend_get_compiled_filename(TSRMLS_C);  	const size_t filename_len = strlen(filename); @@ -4245,12 +4220,10 @@ yy322:  #endif  	} -	zendlval->value.str.len = strlen(dirname); -	zendlval->value.str.val = dirname; -	zendlval->type = IS_STRING; +	ZVAL_STRING(zendlval, dirname, 0);  	return T_DIR;  } -#line 4254 "Zend/zend_language_scanner.c" +#line 4227 "Zend/zend_language_scanner.c"  yy326:  		YYDEBUG(326, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4275,13 +4248,12 @@ yy328:  		}  		YYDEBUG(331, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1677 "Zend/zend_language_scanner.l" +#line 1632 "Zend/zend_language_scanner.l"  		{ -	zendlval->value.lval = CG(zend_lineno); -	zendlval->type = IS_LONG; +	ZVAL_LONG(zendlval, CG(zend_lineno));  	return T_LINE;  } -#line 4285 "Zend/zend_language_scanner.c" +#line 4257 "Zend/zend_language_scanner.c"  yy332:  		YYDEBUG(332, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4316,20 +4288,12 @@ yy336:  		}  		YYDEBUG(339, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1656 "Zend/zend_language_scanner.l" +#line 1619 "Zend/zend_language_scanner.l"  		{  	const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL;  	const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL; -	size_t len = 0; - -	if (class_name) { -		len += strlen(class_name) + 2; -	} -	if (func_name) { -		len += strlen(func_name); -	} -	zendlval->value.str.len = zend_spprintf(&zendlval->value.str.val, 0, "%s%s%s", +	Z_STRLEN_P(zendlval) = zend_spprintf(&Z_STRVAL_P(zendlval), 0, "%s%s%s",  		class_name ? class_name : "",  		class_name && func_name ? "::" : "",  		func_name ? func_name : "" @@ -4337,7 +4301,7 @@ yy336:  	zendlval->type = IS_STRING;  	return T_METHOD_C;  } -#line 4341 "Zend/zend_language_scanner.c" +#line 4305 "Zend/zend_language_scanner.c"  yy340:  		YYDEBUG(340, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4388,23 +4352,17 @@ yy347:  		}  		YYDEBUG(350, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1640 "Zend/zend_language_scanner.l" +#line 1609 "Zend/zend_language_scanner.l"  		{ -	const char *func_name = NULL; - -	if (CG(active_op_array)) { -		func_name = CG(active_op_array)->function_name; -	} - -	if (!func_name) { -		func_name = ""; +	zend_op_array *op_array = CG(active_op_array); +	if (op_array && op_array->function_name) { +		ZVAL_STRING(zendlval, op_array->function_name, 1); +	} else { +		ZVAL_EMPTY_STRING(zendlval);  	} -	zendlval->value.str.len = strlen(func_name); -	zendlval->value.str.val = estrndup(func_name, zendlval->value.str.len); -	zendlval->type = IS_STRING;  	return T_FUNC_C;  } -#line 4408 "Zend/zend_language_scanner.c" +#line 4366 "Zend/zend_language_scanner.c"  yy351:  		YYDEBUG(351, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4424,19 +4382,17 @@ yy352:  		}  		YYDEBUG(355, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1683 "Zend/zend_language_scanner.l" +#line 1637 "Zend/zend_language_scanner.l"  		{  	char *filename = zend_get_compiled_filename(TSRMLS_C);  	if (!filename) {  		filename = "";  	} -	zendlval->value.str.len = strlen(filename); -	zendlval->value.str.val = estrndup(filename, zendlval->value.str.len); -	zendlval->type = IS_STRING; +	ZVAL_STRING(zendlval, filename, 1);  	return T_FILE;  } -#line 4440 "Zend/zend_language_scanner.c" +#line 4396 "Zend/zend_language_scanner.c"  yy356:  		YYDEBUG(356, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4466,27 +4422,17 @@ yy359:  		}  		YYDEBUG(362, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1620 "Zend/zend_language_scanner.l" +#line 1599 "Zend/zend_language_scanner.l"  		{ -	const char *trait_name = NULL; -	 -	if (CG(active_class_entry) -		&& (ZEND_ACC_TRAIT ==  -			(CG(active_class_entry)->ce_flags & ZEND_ACC_TRAIT))) { -		trait_name = CG(active_class_entry)->name; -	} -	 -	if (!trait_name) { -		trait_name = ""; +	zend_class_entry *ce = CG(active_class_entry); +	if (ce && ce->name && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { +		ZVAL_STRINGL(zendlval, ce->name, ce->name_length, 1); +	} else { +		ZVAL_EMPTY_STRING(zendlval);  	} -	 -	zendlval->value.str.len = strlen(trait_name); -	zendlval->value.str.val = estrndup(trait_name, zendlval->value.str.len); -	zendlval->type = IS_STRING; -	  	return T_TRAIT_C;  } -#line 4490 "Zend/zend_language_scanner.c" +#line 4436 "Zend/zend_language_scanner.c"  yy363:  		YYDEBUG(363, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4516,34 +4462,25 @@ yy366:  		}  		YYDEBUG(369, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1593 "Zend/zend_language_scanner.l" +#line 1581 "Zend/zend_language_scanner.l"  		{ -	const char *class_name = NULL; -	 -	if (CG(active_class_entry) -		&& (ZEND_ACC_TRAIT == -			(CG(active_class_entry)->ce_flags & ZEND_ACC_TRAIT))) { +	zend_class_entry *ce = CG(active_class_entry); +	if (ce && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) {  		/* We create a special __CLASS__ constant that is going to be resolved  		   at run-time */ -		zendlval->value.str.len = sizeof("__CLASS__")-1; -		zendlval->value.str.val = estrndup("__CLASS__", zendlval->value.str.len); +		Z_STRLEN_P(zendlval) = sizeof("__CLASS__")-1; +		Z_STRVAL_P(zendlval) = estrndup("__CLASS__", Z_STRLEN_P(zendlval));  		zendlval->type = IS_CONSTANT;  	} else { -		if (CG(active_class_entry)) { -			class_name = CG(active_class_entry)->name; -		} -		 -		if (!class_name) { -			class_name = ""; +		if (ce && ce->name) { +			ZVAL_STRINGL(zendlval, ce->name, ce->name_length, 1); +		} else { +			ZVAL_EMPTY_STRING(zendlval);  		} -		 -		zendlval->value.str.len = strlen(class_name); -		zendlval->value.str.val = estrndup(class_name, zendlval->value.str.len); -		zendlval->type = IS_STRING;  	}  	return T_CLASS_C;  } -#line 4547 "Zend/zend_language_scanner.c" +#line 4484 "Zend/zend_language_scanner.c"  yy370:  		YYDEBUG(370, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4605,11 +4542,11 @@ yy381:  		}  		YYDEBUG(382, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1302 "Zend/zend_language_scanner.l" +#line 1298 "Zend/zend_language_scanner.l"  		{  	return T_HALT_COMPILER;  } -#line 4613 "Zend/zend_language_scanner.c" +#line 4550 "Zend/zend_language_scanner.c"  yy383:  		YYDEBUG(383, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4629,11 +4566,11 @@ yy385:  		}  		YYDEBUG(386, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1282 "Zend/zend_language_scanner.l" +#line 1278 "Zend/zend_language_scanner.l"  		{  	return T_USE;  } -#line 4637 "Zend/zend_language_scanner.c" +#line 4574 "Zend/zend_language_scanner.c"  yy387:  		YYDEBUG(387, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4652,11 +4589,11 @@ yy389:  		}  		YYDEBUG(390, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1330 "Zend/zend_language_scanner.l" +#line 1326 "Zend/zend_language_scanner.l"  		{  	return T_UNSET;  } -#line 4660 "Zend/zend_language_scanner.c" +#line 4597 "Zend/zend_language_scanner.c"  yy391:  		YYDEBUG(391, *YYCURSOR);  		++YYCURSOR; @@ -4828,11 +4765,11 @@ yy406:  		++YYCURSOR;  		YYDEBUG(408, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1230 "Zend/zend_language_scanner.l" +#line 1226 "Zend/zend_language_scanner.l"  		{  	return T_INT_CAST;  } -#line 4836 "Zend/zend_language_scanner.c" +#line 4773 "Zend/zend_language_scanner.c"  yy409:  		YYDEBUG(409, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4876,11 +4813,11 @@ yy414:  		++YYCURSOR;  		YYDEBUG(417, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1234 "Zend/zend_language_scanner.l" +#line 1230 "Zend/zend_language_scanner.l"  		{  	return T_DOUBLE_CAST;  } -#line 4884 "Zend/zend_language_scanner.c" +#line 4821 "Zend/zend_language_scanner.c"  yy418:  		YYDEBUG(418, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4950,11 +4887,11 @@ yy428:  		++YYCURSOR;  		YYDEBUG(431, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1238 "Zend/zend_language_scanner.l" +#line 1234 "Zend/zend_language_scanner.l"  		{  	return T_STRING_CAST;  } -#line 4958 "Zend/zend_language_scanner.c" +#line 4895 "Zend/zend_language_scanner.c"  yy432:  		YYDEBUG(432, *YYCURSOR);  		yych = *++YYCURSOR; @@ -4987,11 +4924,11 @@ yy435:  		++YYCURSOR;  		YYDEBUG(438, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1242 "Zend/zend_language_scanner.l" +#line 1238 "Zend/zend_language_scanner.l"  		{  	return T_ARRAY_CAST;  } -#line 4995 "Zend/zend_language_scanner.c" +#line 4932 "Zend/zend_language_scanner.c"  yy439:  		YYDEBUG(439, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5029,11 +4966,11 @@ yy443:  		++YYCURSOR;  		YYDEBUG(446, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1246 "Zend/zend_language_scanner.l" +#line 1242 "Zend/zend_language_scanner.l"  		{  	return T_OBJECT_CAST;  } -#line 5037 "Zend/zend_language_scanner.c" +#line 4974 "Zend/zend_language_scanner.c"  yy447:  		YYDEBUG(447, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5074,11 +5011,11 @@ yy452:  		++YYCURSOR;  		YYDEBUG(454, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1250 "Zend/zend_language_scanner.l" +#line 1246 "Zend/zend_language_scanner.l"  		{  	return T_BOOL_CAST;  } -#line 5082 "Zend/zend_language_scanner.c" +#line 5019 "Zend/zend_language_scanner.c"  yy455:  		YYDEBUG(455, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5138,11 +5075,11 @@ yy463:  		++YYCURSOR;  		YYDEBUG(466, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1254 "Zend/zend_language_scanner.l" +#line 1250 "Zend/zend_language_scanner.l"  		{  	return T_UNSET_CAST;  } -#line 5146 "Zend/zend_language_scanner.c" +#line 5083 "Zend/zend_language_scanner.c"  yy467:  		YYDEBUG(467, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5156,11 +5093,11 @@ yy468:  		}  		YYDEBUG(469, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1226 "Zend/zend_language_scanner.l" +#line 1222 "Zend/zend_language_scanner.l"  		{  	return T_VAR;  } -#line 5164 "Zend/zend_language_scanner.c" +#line 5101 "Zend/zend_language_scanner.c"  yy470:  		YYDEBUG(470, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5180,11 +5117,11 @@ yy472:  		}  		YYDEBUG(473, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1218 "Zend/zend_language_scanner.l" +#line 1214 "Zend/zend_language_scanner.l"  		{  	return T_NEW;  } -#line 5188 "Zend/zend_language_scanner.c" +#line 5125 "Zend/zend_language_scanner.c"  yy474:  		YYDEBUG(474, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5223,21 +5160,21 @@ yy480:  		}  		YYDEBUG(481, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1278 "Zend/zend_language_scanner.l" +#line 1274 "Zend/zend_language_scanner.l"  		{  	return T_NAMESPACE;  } -#line 5231 "Zend/zend_language_scanner.c" +#line 5168 "Zend/zend_language_scanner.c"  yy482:  		YYDEBUG(482, *YYCURSOR);  		++YYCURSOR;  		YYDEBUG(483, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1210 "Zend/zend_language_scanner.l" +#line 1206 "Zend/zend_language_scanner.l"  		{  	return T_PAAMAYIM_NEKUDOTAYIM;  } -#line 5241 "Zend/zend_language_scanner.c" +#line 5178 "Zend/zend_language_scanner.c"  yy484:  		YYDEBUG(484, *YYCURSOR);  		++YYCURSOR; @@ -5259,32 +5196,32 @@ yy486:  		++YYCURSOR;  		YYDEBUG(487, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1386 "Zend/zend_language_scanner.l" +#line 1382 "Zend/zend_language_scanner.l"  		{  	return T_MINUS_EQUAL;  } -#line 5267 "Zend/zend_language_scanner.c" +#line 5204 "Zend/zend_language_scanner.c"  yy488:  		YYDEBUG(488, *YYCURSOR);  		++YYCURSOR;  		YYDEBUG(489, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1354 "Zend/zend_language_scanner.l" +#line 1350 "Zend/zend_language_scanner.l"  		{  	return T_DEC;  } -#line 5277 "Zend/zend_language_scanner.c" +#line 5214 "Zend/zend_language_scanner.c"  yy490:  		YYDEBUG(490, *YYCURSOR);  		++YYCURSOR;  		YYDEBUG(491, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1180 "Zend/zend_language_scanner.l" +#line 1178 "Zend/zend_language_scanner.l"  		{  	yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);  	return T_OBJECT_OPERATOR;  } -#line 5288 "Zend/zend_language_scanner.c" +#line 5225 "Zend/zend_language_scanner.c"  yy492:  		YYDEBUG(492, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5329,11 +5266,11 @@ yy497:  		}  		YYDEBUG(498, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1326 "Zend/zend_language_scanner.l" +#line 1322 "Zend/zend_language_scanner.l"  		{  	return T_PUBLIC;  } -#line 5337 "Zend/zend_language_scanner.c" +#line 5274 "Zend/zend_language_scanner.c"  yy499:  		YYDEBUG(499, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5388,11 +5325,11 @@ yy506:  		}  		YYDEBUG(507, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1322 "Zend/zend_language_scanner.l" +#line 1318 "Zend/zend_language_scanner.l"  		{  	return T_PROTECTED;  } -#line 5396 "Zend/zend_language_scanner.c" +#line 5333 "Zend/zend_language_scanner.c"  yy508:  		YYDEBUG(508, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5422,11 +5359,11 @@ yy512:  		}  		YYDEBUG(513, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1318 "Zend/zend_language_scanner.l" +#line 1314 "Zend/zend_language_scanner.l"  		{  	return T_PRIVATE;  } -#line 5430 "Zend/zend_language_scanner.c" +#line 5367 "Zend/zend_language_scanner.c"  yy514:  		YYDEBUG(514, *YYCURSOR);  		++YYCURSOR; @@ -5435,11 +5372,11 @@ yy514:  		}  		YYDEBUG(515, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1156 "Zend/zend_language_scanner.l" +#line 1154 "Zend/zend_language_scanner.l"  		{  	return T_PRINT;  } -#line 5443 "Zend/zend_language_scanner.c" +#line 5380 "Zend/zend_language_scanner.c"  yy516:  		YYDEBUG(516, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5464,11 +5401,11 @@ yy519:  		}  		YYDEBUG(520, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1148 "Zend/zend_language_scanner.l" +#line 1146 "Zend/zend_language_scanner.l"  		{  	return T_GOTO;  } -#line 5472 "Zend/zend_language_scanner.c" +#line 5409 "Zend/zend_language_scanner.c"  yy521:  		YYDEBUG(521, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5492,11 +5429,11 @@ yy524:  		}  		YYDEBUG(525, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1290 "Zend/zend_language_scanner.l" +#line 1286 "Zend/zend_language_scanner.l"  		{  	return T_GLOBAL;  } -#line 5500 "Zend/zend_language_scanner.c" +#line 5437 "Zend/zend_language_scanner.c"  yy526:  		YYDEBUG(526, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5533,11 +5470,11 @@ yy532:  		}  		YYDEBUG(533, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1140 "Zend/zend_language_scanner.l" +#line 1138 "Zend/zend_language_scanner.l"  		{  	return T_BREAK;  } -#line 5541 "Zend/zend_language_scanner.c" +#line 5478 "Zend/zend_language_scanner.c"  yy534:  		YYDEBUG(534, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5577,11 +5514,11 @@ yy540:  		}  		YYDEBUG(541, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1124 "Zend/zend_language_scanner.l" +#line 1122 "Zend/zend_language_scanner.l"  		{  	return T_SWITCH;  } -#line 5585 "Zend/zend_language_scanner.c" +#line 5522 "Zend/zend_language_scanner.c"  yy542:  		YYDEBUG(542, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5605,11 +5542,11 @@ yy545:  		}  		YYDEBUG(546, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1306 "Zend/zend_language_scanner.l" +#line 1302 "Zend/zend_language_scanner.l"  		{  	return T_STATIC;  } -#line 5613 "Zend/zend_language_scanner.c" +#line 5550 "Zend/zend_language_scanner.c"  yy547:  		YYDEBUG(547, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5636,11 +5573,11 @@ yy550:  		}  		YYDEBUG(551, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1120 "Zend/zend_language_scanner.l" +#line 1118 "Zend/zend_language_scanner.l"  		{  	return T_AS;  } -#line 5644 "Zend/zend_language_scanner.c" +#line 5581 "Zend/zend_language_scanner.c"  yy552:  		YYDEBUG(552, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5659,11 +5596,11 @@ yy554:  		}  		YYDEBUG(555, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1342 "Zend/zend_language_scanner.l" +#line 1338 "Zend/zend_language_scanner.l"  		{  	return T_ARRAY;  } -#line 5667 "Zend/zend_language_scanner.c" +#line 5604 "Zend/zend_language_scanner.c"  yy556:  		YYDEBUG(556, *YYCURSOR);  		++YYCURSOR; @@ -5672,11 +5609,11 @@ yy556:  		}  		YYDEBUG(557, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1438 "Zend/zend_language_scanner.l" +#line 1434 "Zend/zend_language_scanner.l"  		{  	return T_LOGICAL_AND;  } -#line 5680 "Zend/zend_language_scanner.c" +#line 5617 "Zend/zend_language_scanner.c"  yy558:  		YYDEBUG(558, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5710,11 +5647,11 @@ yy563:  		}  		YYDEBUG(564, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1310 "Zend/zend_language_scanner.l" +#line 1306 "Zend/zend_language_scanner.l"  		{  	return T_ABSTRACT;  } -#line 5718 "Zend/zend_language_scanner.c" +#line 5655 "Zend/zend_language_scanner.c"  yy565:  		YYDEBUG(565, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5738,11 +5675,11 @@ yy568:  		}  		YYDEBUG(569, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1080 "Zend/zend_language_scanner.l" +#line 1078 "Zend/zend_language_scanner.l"  		{  	return T_WHILE;  } -#line 5746 "Zend/zend_language_scanner.c" +#line 5683 "Zend/zend_language_scanner.c"  yy570:  		YYDEBUG(570, *YYCURSOR);  		++YYCURSOR; @@ -5751,11 +5688,11 @@ yy570:  		}  		YYDEBUG(571, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1064 "Zend/zend_language_scanner.l" +#line 1062 "Zend/zend_language_scanner.l"  		{  	return T_IF;  } -#line 5759 "Zend/zend_language_scanner.c" +#line 5696 "Zend/zend_language_scanner.c"  yy572:  		YYDEBUG(572, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5807,11 +5744,11 @@ yy577:  		}  		YYDEBUG(578, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1294 "Zend/zend_language_scanner.l" +#line 1290 "Zend/zend_language_scanner.l"  		{  	return T_ISSET;  } -#line 5815 "Zend/zend_language_scanner.c" +#line 5752 "Zend/zend_language_scanner.c"  yy579:  		YYDEBUG(579, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5865,11 +5802,11 @@ yy585:  yy586:  		YYDEBUG(586, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1262 "Zend/zend_language_scanner.l" +#line 1258 "Zend/zend_language_scanner.l"  		{  	return T_INCLUDE;  } -#line 5873 "Zend/zend_language_scanner.c" +#line 5810 "Zend/zend_language_scanner.c"  yy587:  		YYDEBUG(587, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5898,11 +5835,11 @@ yy591:  		}  		YYDEBUG(592, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1266 "Zend/zend_language_scanner.l" +#line 1262 "Zend/zend_language_scanner.l"  		{  	return T_INCLUDE_ONCE;  } -#line 5906 "Zend/zend_language_scanner.c" +#line 5843 "Zend/zend_language_scanner.c"  yy593:  		YYDEBUG(593, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5936,11 +5873,11 @@ yy598:  		}  		YYDEBUG(599, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1164 "Zend/zend_language_scanner.l" +#line 1162 "Zend/zend_language_scanner.l"  		{  	return T_INTERFACE;  } -#line 5944 "Zend/zend_language_scanner.c" +#line 5881 "Zend/zend_language_scanner.c"  yy600:  		YYDEBUG(600, *YYCURSOR);  		yych = *++YYCURSOR; @@ -5990,11 +5927,11 @@ yy606:  		}  		YYDEBUG(607, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1286 "Zend/zend_language_scanner.l" +#line 1282 "Zend/zend_language_scanner.l"  		{          return T_INSTEADOF;  } -#line 5998 "Zend/zend_language_scanner.c" +#line 5935 "Zend/zend_language_scanner.c"  yy608:  		YYDEBUG(608, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6023,11 +5960,11 @@ yy612:  		}  		YYDEBUG(613, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1116 "Zend/zend_language_scanner.l" +#line 1114 "Zend/zend_language_scanner.l"  		{  	return T_INSTANCEOF;  } -#line 6031 "Zend/zend_language_scanner.c" +#line 5968 "Zend/zend_language_scanner.c"  yy614:  		YYDEBUG(614, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6071,11 +6008,11 @@ yy621:  		}  		YYDEBUG(622, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1176 "Zend/zend_language_scanner.l" +#line 1174 "Zend/zend_language_scanner.l"  		{  	return T_IMPLEMENTS;  } -#line 6079 "Zend/zend_language_scanner.c" +#line 6016 "Zend/zend_language_scanner.c"  yy623:  		YYDEBUG(623, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6103,11 +6040,11 @@ yy624:  		}  		YYDEBUG(626, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1048 "Zend/zend_language_scanner.l" +#line 1046 "Zend/zend_language_scanner.l"  		{  	return T_TRY;  } -#line 6111 "Zend/zend_language_scanner.c" +#line 6048 "Zend/zend_language_scanner.c"  yy627:  		YYDEBUG(627, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6126,11 +6063,11 @@ yy629:  		}  		YYDEBUG(630, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1168 "Zend/zend_language_scanner.l" +#line 1166 "Zend/zend_language_scanner.l"  		{  	return T_TRAIT;  } -#line 6134 "Zend/zend_language_scanner.c" +#line 6071 "Zend/zend_language_scanner.c"  yy631:  		YYDEBUG(631, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6149,11 +6086,11 @@ yy633:  		}  		YYDEBUG(634, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1060 "Zend/zend_language_scanner.l" +#line 1058 "Zend/zend_language_scanner.l"  		{  	return T_THROW;  } -#line 6157 "Zend/zend_language_scanner.c" +#line 6094 "Zend/zend_language_scanner.c"  yy635:  		YYDEBUG(635, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6177,11 +6114,11 @@ yy638:  		}  		YYDEBUG(639, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1044 "Zend/zend_language_scanner.l" +#line 1042 "Zend/zend_language_scanner.l"  		{  	return T_YIELD;  } -#line 6185 "Zend/zend_language_scanner.c" +#line 6122 "Zend/zend_language_scanner.c"  yy640:  		YYDEBUG(640, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6242,11 +6179,11 @@ yy646:  yy647:  		YYDEBUG(647, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1270 "Zend/zend_language_scanner.l" +#line 1266 "Zend/zend_language_scanner.l"  		{  	return T_REQUIRE;  } -#line 6250 "Zend/zend_language_scanner.c" +#line 6187 "Zend/zend_language_scanner.c"  yy648:  		YYDEBUG(648, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6275,11 +6212,11 @@ yy652:  		}  		YYDEBUG(653, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1274 "Zend/zend_language_scanner.l" +#line 1270 "Zend/zend_language_scanner.l"  		{  	return T_REQUIRE_ONCE;  } -#line 6283 "Zend/zend_language_scanner.c" +#line 6220 "Zend/zend_language_scanner.c"  yy654:  		YYDEBUG(654, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6298,11 +6235,11 @@ yy656:  		}  		YYDEBUG(657, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1040 "Zend/zend_language_scanner.l" +#line 1038 "Zend/zend_language_scanner.l"  		{  	return T_RETURN;  } -#line 6306 "Zend/zend_language_scanner.c" +#line 6243 "Zend/zend_language_scanner.c"  yy658:  		YYDEBUG(658, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6392,11 +6329,11 @@ yy667:  		}  		YYDEBUG(668, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1144 "Zend/zend_language_scanner.l" +#line 1142 "Zend/zend_language_scanner.l"  		{  	return T_CONTINUE;  } -#line 6400 "Zend/zend_language_scanner.c" +#line 6337 "Zend/zend_language_scanner.c"  yy669:  		YYDEBUG(669, *YYCURSOR);  		++YYCURSOR; @@ -6405,11 +6342,11 @@ yy669:  		}  		YYDEBUG(670, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1036 "Zend/zend_language_scanner.l" +#line 1034 "Zend/zend_language_scanner.l"  		{  	return T_CONST;  } -#line 6413 "Zend/zend_language_scanner.c" +#line 6350 "Zend/zend_language_scanner.c"  yy671:  		YYDEBUG(671, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6434,11 +6371,11 @@ yy674:  		}  		YYDEBUG(675, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1222 "Zend/zend_language_scanner.l" +#line 1218 "Zend/zend_language_scanner.l"  		{  	return T_CLONE;  } -#line 6442 "Zend/zend_language_scanner.c" +#line 6379 "Zend/zend_language_scanner.c"  yy676:  		YYDEBUG(676, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6452,11 +6389,11 @@ yy677:  		}  		YYDEBUG(678, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1160 "Zend/zend_language_scanner.l" +#line 1158 "Zend/zend_language_scanner.l"  		{  	return T_CLASS;  } -#line 6460 "Zend/zend_language_scanner.c" +#line 6397 "Zend/zend_language_scanner.c"  yy679:  		YYDEBUG(679, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6502,11 +6439,11 @@ yy686:  		}  		YYDEBUG(687, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1346 "Zend/zend_language_scanner.l" +#line 1342 "Zend/zend_language_scanner.l"  		{   return T_CALLABLE;  } -#line 6510 "Zend/zend_language_scanner.c" +#line 6447 "Zend/zend_language_scanner.c"  yy688:  		YYDEBUG(688, *YYCURSOR);  		++YYCURSOR; @@ -6515,11 +6452,11 @@ yy688:  		}  		YYDEBUG(689, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1132 "Zend/zend_language_scanner.l" +#line 1130 "Zend/zend_language_scanner.l"  		{  	return T_CASE;  } -#line 6523 "Zend/zend_language_scanner.c" +#line 6460 "Zend/zend_language_scanner.c"  yy690:  		YYDEBUG(690, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6533,11 +6470,11 @@ yy691:  		}  		YYDEBUG(692, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1052 "Zend/zend_language_scanner.l" +#line 1050 "Zend/zend_language_scanner.l"  		{  	return T_CATCH;  } -#line 6541 "Zend/zend_language_scanner.c" +#line 6478 "Zend/zend_language_scanner.c"  yy693:  		YYDEBUG(693, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6588,11 +6525,11 @@ yy701:  		}  		YYDEBUG(702, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1032 "Zend/zend_language_scanner.l" +#line 1030 "Zend/zend_language_scanner.l"  		{  	return T_FUNCTION;  } -#line 6596 "Zend/zend_language_scanner.c" +#line 6533 "Zend/zend_language_scanner.c"  yy703:  		YYDEBUG(703, *YYCURSOR);  		++YYCURSOR; @@ -6616,11 +6553,11 @@ yy703:  yy704:  		YYDEBUG(704, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1092 "Zend/zend_language_scanner.l" +#line 1090 "Zend/zend_language_scanner.l"  		{  	return T_FOR;  } -#line 6624 "Zend/zend_language_scanner.c" +#line 6561 "Zend/zend_language_scanner.c"  yy705:  		YYDEBUG(705, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6644,11 +6581,11 @@ yy708:  		}  		YYDEBUG(709, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1100 "Zend/zend_language_scanner.l" +#line 1098 "Zend/zend_language_scanner.l"  		{  	return T_FOREACH;  } -#line 6652 "Zend/zend_language_scanner.c" +#line 6589 "Zend/zend_language_scanner.c"  yy710:  		YYDEBUG(710, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6682,11 +6619,11 @@ yy712:  yy713:  		YYDEBUG(713, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1314 "Zend/zend_language_scanner.l" +#line 1310 "Zend/zend_language_scanner.l"  		{  	return T_FINAL;  } -#line 6690 "Zend/zend_language_scanner.c" +#line 6627 "Zend/zend_language_scanner.c"  yy714:  		YYDEBUG(714, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6700,11 +6637,11 @@ yy715:  		}  		YYDEBUG(716, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1056 "Zend/zend_language_scanner.l" +#line 1054 "Zend/zend_language_scanner.l"  		{  	return T_FINALLY;  } -#line 6708 "Zend/zend_language_scanner.c" +#line 6645 "Zend/zend_language_scanner.c"  yy717:  		YYDEBUG(717, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6735,11 +6672,11 @@ yy719:  		}  		YYDEBUG(720, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1088 "Zend/zend_language_scanner.l" +#line 1086 "Zend/zend_language_scanner.l"  		{  	return T_DO;  } -#line 6743 "Zend/zend_language_scanner.c" +#line 6680 "Zend/zend_language_scanner.c"  yy721:  		YYDEBUG(721, *YYCURSOR);  		++YYCURSOR; @@ -6748,11 +6685,11 @@ yy721:  		}  		YYDEBUG(722, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1028 "Zend/zend_language_scanner.l" +#line 1026 "Zend/zend_language_scanner.l"  		{  	return T_EXIT;  } -#line 6756 "Zend/zend_language_scanner.c" +#line 6693 "Zend/zend_language_scanner.c"  yy723:  		YYDEBUG(723, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6787,11 +6724,11 @@ yy728:  		}  		YYDEBUG(729, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1136 "Zend/zend_language_scanner.l" +#line 1134 "Zend/zend_language_scanner.l"  		{  	return T_DEFAULT;  } -#line 6795 "Zend/zend_language_scanner.c" +#line 6732 "Zend/zend_language_scanner.c"  yy730:  		YYDEBUG(730, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6815,11 +6752,11 @@ yy733:  		}  		YYDEBUG(734, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1108 "Zend/zend_language_scanner.l" +#line 1106 "Zend/zend_language_scanner.l"  		{  	return T_DECLARE;  } -#line 6823 "Zend/zend_language_scanner.c" +#line 6760 "Zend/zend_language_scanner.c"  yy735:  		YYDEBUG(735, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6899,11 +6836,11 @@ yy746:  		}  		YYDEBUG(747, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1172 "Zend/zend_language_scanner.l" +#line 1170 "Zend/zend_language_scanner.l"  		{  	return T_EXTENDS;  } -#line 6907 "Zend/zend_language_scanner.c" +#line 6844 "Zend/zend_language_scanner.c"  yy748:  		YYDEBUG(748, *YYCURSOR);  		++YYCURSOR; @@ -6912,11 +6849,11 @@ yy748:  		}  		YYDEBUG(749, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1024 "Zend/zend_language_scanner.l" +#line 1022 "Zend/zend_language_scanner.l"  		{  	return T_EXIT;  } -#line 6920 "Zend/zend_language_scanner.c" +#line 6857 "Zend/zend_language_scanner.c"  yy750:  		YYDEBUG(750, *YYCURSOR);  		yych = *++YYCURSOR; @@ -6930,11 +6867,11 @@ yy751:  		}  		YYDEBUG(752, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1258 "Zend/zend_language_scanner.l" +#line 1254 "Zend/zend_language_scanner.l"  		{  	return T_EVAL;  } -#line 6938 "Zend/zend_language_scanner.c" +#line 6875 "Zend/zend_language_scanner.c"  yy753:  		YYDEBUG(753, *YYCURSOR);  		yych = *++YYCURSOR; @@ -7004,11 +6941,11 @@ yy762:  		}  		YYDEBUG(763, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1084 "Zend/zend_language_scanner.l" +#line 1082 "Zend/zend_language_scanner.l"  		{  	return T_ENDWHILE;  } -#line 7012 "Zend/zend_language_scanner.c" +#line 6949 "Zend/zend_language_scanner.c"  yy764:  		YYDEBUG(764, *YYCURSOR);  		yych = *++YYCURSOR; @@ -7037,11 +6974,11 @@ yy768:  		}  		YYDEBUG(769, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1128 "Zend/zend_language_scanner.l" +#line 1126 "Zend/zend_language_scanner.l"  		{  	return T_ENDSWITCH;  } -#line 7045 "Zend/zend_language_scanner.c" +#line 6982 "Zend/zend_language_scanner.c"  yy770:  		YYDEBUG(770, *YYCURSOR);  		++YYCURSOR; @@ -7050,11 +6987,11 @@ yy770:  		}  		YYDEBUG(771, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1072 "Zend/zend_language_scanner.l" +#line 1070 "Zend/zend_language_scanner.l"  		{  	return T_ENDIF;  } -#line 7058 "Zend/zend_language_scanner.c" +#line 6995 "Zend/zend_language_scanner.c"  yy772:  		YYDEBUG(772, *YYCURSOR);  		yych = *++YYCURSOR; @@ -7083,11 +7020,11 @@ yy773:  yy774:  		YYDEBUG(774, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1096 "Zend/zend_language_scanner.l" +#line 1094 "Zend/zend_language_scanner.l"  		{  	return T_ENDFOR;  } -#line 7091 "Zend/zend_language_scanner.c" +#line 7028 "Zend/zend_language_scanner.c"  yy775:  		YYDEBUG(775, *YYCURSOR);  		yych = *++YYCURSOR; @@ -7111,11 +7048,11 @@ yy778:  		}  		YYDEBUG(779, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1104 "Zend/zend_language_scanner.l" +#line 1102 "Zend/zend_language_scanner.l"  		{  	return T_ENDFOREACH;  } -#line 7119 "Zend/zend_language_scanner.c" +#line 7056 "Zend/zend_language_scanner.c"  yy780:  		YYDEBUG(780, *YYCURSOR);  		yych = *++YYCURSOR; @@ -7149,11 +7086,11 @@ yy785:  		}  		YYDEBUG(786, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1112 "Zend/zend_language_scanner.l" +#line 1110 "Zend/zend_language_scanner.l"  		{  	return T_ENDDECLARE;  } -#line 7157 "Zend/zend_language_scanner.c" +#line 7094 "Zend/zend_language_scanner.c"  yy787:  		YYDEBUG(787, *YYCURSOR);  		yych = *++YYCURSOR; @@ -7172,11 +7109,11 @@ yy789:  		}  		YYDEBUG(790, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1298 "Zend/zend_language_scanner.l" +#line 1294 "Zend/zend_language_scanner.l"  		{  	return T_EMPTY;  } -#line 7180 "Zend/zend_language_scanner.c" +#line 7117 "Zend/zend_language_scanner.c"  yy791:  		YYDEBUG(791, *YYCURSOR);  		yych = *++YYCURSOR; @@ -7205,11 +7142,11 @@ yy792:  yy793:  		YYDEBUG(793, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1076 "Zend/zend_language_scanner.l" +#line 1074 "Zend/zend_language_scanner.l"  		{  	return T_ELSE;  } -#line 7213 "Zend/zend_language_scanner.c" +#line 7150 "Zend/zend_language_scanner.c"  yy794:  		YYDEBUG(794, *YYCURSOR);  		yych = *++YYCURSOR; @@ -7223,11 +7160,11 @@ yy795:  		}  		YYDEBUG(796, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1068 "Zend/zend_language_scanner.l" +#line 1066 "Zend/zend_language_scanner.l"  		{  	return T_ELSEIF;  } -#line 7231 "Zend/zend_language_scanner.c" +#line 7168 "Zend/zend_language_scanner.c"  yy797:  		YYDEBUG(797, *YYCURSOR);  		yych = *++YYCURSOR; @@ -7241,11 +7178,11 @@ yy798:  		}  		YYDEBUG(799, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1152 "Zend/zend_language_scanner.l" +#line 1150 "Zend/zend_language_scanner.l"  		{  	return T_ECHO;  } -#line 7249 "Zend/zend_language_scanner.c" +#line 7186 "Zend/zend_language_scanner.c"  	}  /* *********************************** */  yyc_ST_LOOKING_FOR_PROPERTY: @@ -7318,15 +7255,13 @@ yy802:  yy803:  		YYDEBUG(803, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1185 "Zend/zend_language_scanner.l" +#line 1183 "Zend/zend_language_scanner.l"  		{ -	zendlval->value.str.val = yytext; /* no copying - intentional */ -	zendlval->value.str.len = yyleng; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  	HANDLE_NEWLINES(yytext, yyleng);  	return T_WHITESPACE;  } -#line 7330 "Zend/zend_language_scanner.c" +#line 7265 "Zend/zend_language_scanner.c"  yy804:  		YYDEBUG(804, *YYCURSOR);  		++YYCURSOR; @@ -7334,13 +7269,13 @@ yy804:  yy805:  		YYDEBUG(805, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1204 "Zend/zend_language_scanner.l" +#line 1200 "Zend/zend_language_scanner.l"  		{  	yyless(0);  	yy_pop_state(TSRMLS_C);  	goto restart;  } -#line 7344 "Zend/zend_language_scanner.c" +#line 7279 "Zend/zend_language_scanner.c"  yy806:  		YYDEBUG(806, *YYCURSOR);  		++YYCURSOR; @@ -7349,14 +7284,14 @@ yy806:  yy807:  		YYDEBUG(807, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1197 "Zend/zend_language_scanner.l" +#line 1193 "Zend/zend_language_scanner.l"  		{  	yy_pop_state(TSRMLS_C);  	zend_copy_value(zendlval, yytext, yyleng);  	zendlval->type = IS_STRING;  	return T_STRING;  } -#line 7360 "Zend/zend_language_scanner.c" +#line 7295 "Zend/zend_language_scanner.c"  yy808:  		YYDEBUG(808, *YYCURSOR);  		yych = *++YYCURSOR; @@ -7377,11 +7312,11 @@ yy811:  		++YYCURSOR;  		YYDEBUG(812, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1193 "Zend/zend_language_scanner.l" +#line 1189 "Zend/zend_language_scanner.l"  		{  	return T_OBJECT_OPERATOR;  } -#line 7385 "Zend/zend_language_scanner.c" +#line 7320 "Zend/zend_language_scanner.c"  yy813:  		YYDEBUG(813, *YYCURSOR);  		++YYCURSOR; @@ -7466,14 +7401,14 @@ yy817:  yy818:  		YYDEBUG(818, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1490 "Zend/zend_language_scanner.l" +#line 1486 "Zend/zend_language_scanner.l"  		{  	yyless(0);  	yy_pop_state(TSRMLS_C);  	yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);  	goto restart;  } -#line 7477 "Zend/zend_language_scanner.c" +#line 7412 "Zend/zend_language_scanner.c"  yy819:  		YYDEBUG(819, *YYCURSOR);  		yych = *++YYCURSOR; @@ -7498,7 +7433,7 @@ yy823:  		++YYCURSOR;  		YYDEBUG(824, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1480 "Zend/zend_language_scanner.l" +#line 1476 "Zend/zend_language_scanner.l"  		{  	yyless(yyleng - 1);  	zend_copy_value(zendlval, yytext, yyleng); @@ -7507,7 +7442,7 @@ yy823:  	yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);  	return T_STRING_VARNAME;  } -#line 7511 "Zend/zend_language_scanner.c" +#line 7446 "Zend/zend_language_scanner.c"  	}  /* *********************************** */  yyc_ST_NOWDOC: @@ -7518,7 +7453,7 @@ yyc_ST_NOWDOC:  	++YYCURSOR;  	YYDEBUG(828, *YYCURSOR);  	yyleng = YYCURSOR - SCNG(yy_text); -#line 2374 "Zend/zend_language_scanner.l" +#line 2306 "Zend/zend_language_scanner.l"  	{  	int newline = 0; @@ -7575,7 +7510,7 @@ nowdoc_scan_done:  	HANDLE_NEWLINES(yytext, yyleng - newline);  	return T_ENCAPSED_AND_WHITESPACE;  } -#line 7579 "Zend/zend_language_scanner.c" +#line 7514 "Zend/zend_language_scanner.c"  /* *********************************** */  yyc_ST_VAR_OFFSET:  	{ @@ -7682,19 +7617,16 @@ yy831:  yy832:  		YYDEBUG(832, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1568 "Zend/zend_language_scanner.l" +#line 1562 "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)) { -		zendlval->value.lval = strtol(yytext, NULL, 10); -		zendlval->type = IS_LONG; +		ZVAL_LONG(zendlval, strtol(yytext, NULL, 10));  	} else { -		zendlval->value.str.val = (char *)estrndup(yytext, yyleng); -		zendlval->value.str.len = yyleng; -		zendlval->type = IS_STRING; +		ZVAL_STRINGL(zendlval, yytext, yyleng, 1);  	}  	return T_NUM_STRING;  } -#line 7698 "Zend/zend_language_scanner.c" +#line 7630 "Zend/zend_language_scanner.c"  yy833:  		YYDEBUG(833, *YYCURSOR);  		yych = *++YYCURSOR; @@ -7714,23 +7646,23 @@ yy834:  yy835:  		YYDEBUG(835, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1900 "Zend/zend_language_scanner.l" +#line 1838 "Zend/zend_language_scanner.l"  		{  	/* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */  	return yytext[0];  } -#line 7723 "Zend/zend_language_scanner.c" +#line 7655 "Zend/zend_language_scanner.c"  yy836:  		YYDEBUG(836, *YYCURSOR);  		++YYCURSOR;  		YYDEBUG(837, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1895 "Zend/zend_language_scanner.l" +#line 1833 "Zend/zend_language_scanner.l"  		{  	yy_pop_state(TSRMLS_C);  	return ']';  } -#line 7734 "Zend/zend_language_scanner.c" +#line 7666 "Zend/zend_language_scanner.c"  yy838:  		YYDEBUG(838, *YYCURSOR);  		yych = *++YYCURSOR; @@ -7740,14 +7672,14 @@ yy839:  		++YYCURSOR;  		YYDEBUG(840, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1905 "Zend/zend_language_scanner.l" +#line 1843 "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 7751 "Zend/zend_language_scanner.c" +#line 7683 "Zend/zend_language_scanner.c"  yy841:  		YYDEBUG(841, *YYCURSOR);  		++YYCURSOR; @@ -7756,19 +7688,19 @@ yy841:  yy842:  		YYDEBUG(842, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1912 "Zend/zend_language_scanner.l" +#line 1850 "Zend/zend_language_scanner.l"  		{  	zend_copy_value(zendlval, yytext, yyleng);  	zendlval->type = IS_STRING;  	return T_STRING;  } -#line 7766 "Zend/zend_language_scanner.c" +#line 7698 "Zend/zend_language_scanner.c"  yy843:  		YYDEBUG(843, *YYCURSOR);  		++YYCURSOR;  		YYDEBUG(844, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 2432 "Zend/zend_language_scanner.l" +#line 2364 "Zend/zend_language_scanner.l"  		{  	if (YYCURSOR > YYLIMIT) {  		return 0; @@ -7777,7 +7709,7 @@ yy843:  	zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);  	goto restart;  } -#line 7781 "Zend/zend_language_scanner.c" +#line 7713 "Zend/zend_language_scanner.c"  yy845:  		YYDEBUG(845, *YYCURSOR);  		++YYCURSOR; @@ -7813,13 +7745,13 @@ yy847:  yy849:  		YYDEBUG(849, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1889 "Zend/zend_language_scanner.l" +#line 1827 "Zend/zend_language_scanner.l"  		{  	zend_copy_value(zendlval, (yytext+1), (yyleng-1));  	zendlval->type = IS_STRING;  	return T_VARIABLE;  } -#line 7823 "Zend/zend_language_scanner.c" +#line 7755 "Zend/zend_language_scanner.c"  yy850:  		YYDEBUG(850, *YYCURSOR);  		++YYCURSOR; @@ -7859,14 +7791,12 @@ yy855:  yy857:  		YYDEBUG(857, *YYCURSOR);  		yyleng = YYCURSOR - SCNG(yy_text); -#line 1580 "Zend/zend_language_scanner.l" +#line 1571 "Zend/zend_language_scanner.l"  		{ /* Offset must be treated as a string */ -	zendlval->value.str.val = (char *)estrndup(yytext, yyleng); -	zendlval->value.str.len = yyleng; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext, yyleng, 1);  	return T_NUM_STRING;  } -#line 7870 "Zend/zend_language_scanner.c" +#line 7800 "Zend/zend_language_scanner.c"  yy858:  		YYDEBUG(858, *YYCURSOR);  		++YYCURSOR; @@ -7889,6 +7819,6 @@ yy860:  		goto yy857;  	}  } -#line 2441 "Zend/zend_language_scanner.l" +#line 2373 "Zend/zend_language_scanner.l"  } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index d2e7243bb2..95d2d6246b 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -562,10 +562,8 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSR  	zend_bool original_in_compilation = CG(in_compilation);  	retval_znode.op_type = IS_CONST; -	retval_znode.u.constant.type = IS_LONG; -	retval_znode.u.constant.value.lval = 1; -	Z_UNSET_ISREF(retval_znode.u.constant); -	Z_SET_REFCOUNT(retval_znode.u.constant, 1); +	INIT_PZVAL(&retval_znode.u.constant); +	ZVAL_LONG(&retval_znode.u.constant, 1);  	zend_save_lexical_state(&original_lex_state TSRMLS_CC); @@ -622,7 +620,7 @@ zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC)  		convert_to_string(&tmp);  		filename = &tmp;  	} -	file_handle.filename = filename->value.str.val; +	file_handle.filename = Z_STRVAL_P(filename);  	file_handle.free_filename = 0;  	file_handle.type = ZEND_HANDLE_FILENAME;  	file_handle.opened_path = NULL; @@ -633,7 +631,7 @@ zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC)  		int dummy = 1;  		if (!file_handle.opened_path) { -			file_handle.opened_path = opened_path = estrndup(filename->value.str.val, filename->value.str.len); +			file_handle.opened_path = opened_path = estrndup(Z_STRVAL_P(filename), Z_STRLEN_P(filename));  		}  		zend_hash_add(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1, (void *)&dummy, sizeof(int), NULL); @@ -656,21 +654,21 @@ ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename TSRMLS_D  	size_t size;  	/* enforce two trailing NULLs for flex... */ -	if (IS_INTERNED(str->value.str.val)) { -		char *tmp = safe_emalloc(1, str->value.str.len, ZEND_MMAP_AHEAD); -		memcpy(tmp, str->value.str.val, str->value.str.len + ZEND_MMAP_AHEAD); -		str->value.str.val = tmp; +	if (IS_INTERNED(Z_STRVAL_P(str))) { +		char *tmp = safe_emalloc(1, Z_STRLEN_P(str), ZEND_MMAP_AHEAD); +		memcpy(tmp, Z_STRVAL_P(str), Z_STRLEN_P(str) + ZEND_MMAP_AHEAD); +		Z_STRVAL_P(str) = tmp;  	} else { -		str->value.str.val = safe_erealloc(str->value.str.val, 1, str->value.str.len, ZEND_MMAP_AHEAD); +		Z_STRVAL_P(str) = safe_erealloc(Z_STRVAL_P(str), 1, Z_STRLEN_P(str), ZEND_MMAP_AHEAD);  	} -	memset(str->value.str.val + str->value.str.len, 0, ZEND_MMAP_AHEAD); +	memset(Z_STRVAL_P(str) + Z_STRLEN_P(str), 0, ZEND_MMAP_AHEAD);  	SCNG(yy_in) = NULL;  	SCNG(yy_start) = NULL; -	buf = str->value.str.val; -	size = str->value.str.len; +	buf = Z_STRVAL_P(str); +	size = Z_STRLEN_P(str);  	if (CG(multibyte)) {  		SCNG(script_org) = (unsigned char*)buf; @@ -731,7 +729,7 @@ zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC)  	int compiler_result;  	zend_bool original_in_compilation = CG(in_compilation); -	if (source_string->value.str.len==0) { +	if (Z_STRLEN_P(source_string)==0) {  		efree(op_array);  		return NULL;  	} @@ -869,11 +867,11 @@ ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter  # define zend_copy_value(zendlval, yytext, yyleng) \  	if (SCNG(output_filter)) { \  		size_t sz = 0; \ -		SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); \ -		zendlval->value.str.len = sz; \ +		SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); \ +		Z_STRLEN_P(zendlval) = sz; \  	} else { \ -		zendlval->value.str.val = (char *) estrndup(yytext, yyleng); \ -		zendlval->value.str.len = yyleng; \ +		Z_STRVAL_P(zendlval) = (char *) estrndup(yytext, yyleng); \ +		Z_STRLEN_P(zendlval) = yyleng; \  	}  static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type TSRMLS_DC) @@ -884,8 +882,8 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo  	ZVAL_STRINGL(zendlval, str, len, 1);  	/* convert escape sequences */ -	s = t = zendlval->value.str.val; -	end = s+zendlval->value.str.len; +	s = t = Z_STRVAL_P(zendlval); +	end = s+Z_STRLEN_P(zendlval);  	while (s<end) {  		if (*s=='\\') {  			s++; @@ -897,23 +895,23 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo  			switch(*s) {  				case 'n':  					*t++ = '\n'; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case 'r':  					*t++ = '\r'; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case 't':  					*t++ = '\t'; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case 'f':  					*t++ = '\f'; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case 'v':  					*t++ = '\v'; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case 'e':  #ifdef PHP_WIN32 @@ -921,7 +919,7 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo  #else  					*t++ = '\e';  #endif -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case '"':  				case '`': @@ -933,20 +931,20 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo  				case '\\':  				case '$':  					*t++ = *s; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				case 'x':  				case 'X':  					if (ZEND_IS_HEX(*(s+1))) {  						char hex_buf[3] = { 0, 0, 0 }; -						zendlval->value.str.len--; /* for the 'x' */ +						Z_STRLEN_P(zendlval)--; /* for the 'x' */  						hex_buf[0] = *(++s); -						zendlval->value.str.len--; +						Z_STRLEN_P(zendlval)--;  						if (ZEND_IS_HEX(*(s+1))) {  							hex_buf[1] = *(++s); -							zendlval->value.str.len--; +							Z_STRLEN_P(zendlval)--;  						}  						*t++ = (char) strtol(hex_buf, NULL, 16);  					} else { @@ -960,13 +958,13 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo  						char octal_buf[4] = { 0, 0, 0, 0 };  						octal_buf[0] = *s; -						zendlval->value.str.len--; +						Z_STRLEN_P(zendlval)--;  						if (ZEND_IS_OCT(*(s+1))) {  							octal_buf[1] = *(++s); -							zendlval->value.str.len--; +							Z_STRLEN_P(zendlval)--;  							if (ZEND_IS_OCT(*(s+1))) {  								octal_buf[2] = *(++s); -								zendlval->value.str.len--; +								Z_STRLEN_P(zendlval)--;  							}  						}  						*t++ = (char) strtol(octal_buf, NULL, 8); @@ -988,9 +986,9 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo  	*t = 0;  	if (SCNG(output_filter)) {  		size_t sz = 0; -		s = zendlval->value.str.val; -		SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)s, (size_t)zendlval->value.str.len TSRMLS_CC); -		zendlval->value.str.len = sz; +		s = Z_STRVAL_P(zendlval); +		SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval) TSRMLS_CC); +		Z_STRLEN_P(zendlval) = sz;  		efree(s);  	}  } @@ -1183,9 +1181,7 @@ NEWLINE ("\r"|"\n"|"\r\n")  }  <ST_IN_SCRIPTING,ST_LOOKING_FOR_PROPERTY>{WHITESPACE}+ { -	zendlval->value.str.val = yytext; /* no copying - intentional */ -	zendlval->value.str.len = yyleng; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  	HANDLE_NEWLINES(yytext, yyleng);  	return T_WHITESPACE;  } @@ -1506,30 +1502,29 @@ NEWLINE ("\r"|"\n"|"\r\n")  	if (len < SIZEOF_LONG * 8) {  		if (len == 0) { -			zendlval->value.lval = 0; +			Z_LVAL_P(zendlval) = 0;  		} else { -			zendlval->value.lval = strtol(bin, NULL, 2); +			Z_LVAL_P(zendlval) = strtol(bin, NULL, 2);  		}  		zendlval->type = IS_LONG;  		return T_LNUMBER;  	} else { -		zendlval->value.dval = zend_bin_strtod(bin, NULL); -		zendlval->type = IS_DOUBLE; +		ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, NULL));  		return T_DNUMBER;  	}  }  <ST_IN_SCRIPTING>{LNUM} {  	if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ -		zendlval->value.lval = strtol(yytext, NULL, 0); +		Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0);  	} else {  		errno = 0; -		zendlval->value.lval = strtol(yytext, NULL, 0); +		Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0);  		if (errno == ERANGE) { /* Overflow */  			if (yytext[0] == '0') { /* octal overflow */ -				zendlval->value.dval = zend_oct_strtod(yytext, NULL); +				Z_DVAL_P(zendlval) = zend_oct_strtod(yytext, NULL);  			} else { -				zendlval->value.dval = zend_strtod(yytext, NULL); +				Z_DVAL_P(zendlval) = zend_strtod(yytext, NULL);  			}  			zendlval->type = IS_DOUBLE;  			return T_DNUMBER; @@ -1552,120 +1547,80 @@ NEWLINE ("\r"|"\n"|"\r\n")  	if (len < SIZEOF_LONG * 2 || (len == SIZEOF_LONG * 2 && *hex <= '7')) {  		if (len == 0) { -			zendlval->value.lval = 0; +			Z_LVAL_P(zendlval) = 0;  		} else { -			zendlval->value.lval = strtol(hex, NULL, 16); +			Z_LVAL_P(zendlval) = strtol(hex, NULL, 16);  		}  		zendlval->type = IS_LONG;  		return T_LNUMBER;  	} else { -		zendlval->value.dval = zend_hex_strtod(hex, NULL); -		zendlval->type = IS_DOUBLE; +		ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, NULL));  		return T_DNUMBER;  	}  }  <ST_VAR_OFFSET>[0]|([1-9][0-9]*) { /* 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)) { -		zendlval->value.lval = strtol(yytext, NULL, 10); -		zendlval->type = IS_LONG; +		ZVAL_LONG(zendlval, strtol(yytext, NULL, 10));  	} else { -		zendlval->value.str.val = (char *)estrndup(yytext, yyleng); -		zendlval->value.str.len = yyleng; -		zendlval->type = IS_STRING; +		ZVAL_STRINGL(zendlval, yytext, yyleng, 1);  	}  	return T_NUM_STRING;  }  <ST_VAR_OFFSET>{LNUM}|{HNUM}|{BNUM} { /* Offset must be treated as a string */ -	zendlval->value.str.val = (char *)estrndup(yytext, yyleng); -	zendlval->value.str.len = yyleng; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext, yyleng, 1);  	return T_NUM_STRING;  }  <ST_IN_SCRIPTING>{DNUM}|{EXPONENT_DNUM} { -	zendlval->value.dval = zend_strtod(yytext, NULL); -	zendlval->type = IS_DOUBLE; +	ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL));  	return T_DNUMBER;  }  <ST_IN_SCRIPTING>"__CLASS__" { -	const char *class_name = NULL; -	 -	if (CG(active_class_entry) -		&& (ZEND_ACC_TRAIT == -			(CG(active_class_entry)->ce_flags & ZEND_ACC_TRAIT))) { +	zend_class_entry *ce = CG(active_class_entry); +	if (ce && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) {  		/* We create a special __CLASS__ constant that is going to be resolved  		   at run-time */ -		zendlval->value.str.len = sizeof("__CLASS__")-1; -		zendlval->value.str.val = estrndup("__CLASS__", zendlval->value.str.len); +		Z_STRLEN_P(zendlval) = sizeof("__CLASS__")-1; +		Z_STRVAL_P(zendlval) = estrndup("__CLASS__", Z_STRLEN_P(zendlval));  		zendlval->type = IS_CONSTANT;  	} else { -		if (CG(active_class_entry)) { -			class_name = CG(active_class_entry)->name; -		} -		 -		if (!class_name) { -			class_name = ""; +		if (ce && ce->name) { +			ZVAL_STRINGL(zendlval, ce->name, ce->name_length, 1); +		} else { +			ZVAL_EMPTY_STRING(zendlval);  		} -		 -		zendlval->value.str.len = strlen(class_name); -		zendlval->value.str.val = estrndup(class_name, zendlval->value.str.len); -		zendlval->type = IS_STRING;  	}  	return T_CLASS_C;  }  <ST_IN_SCRIPTING>"__TRAIT__" { -	const char *trait_name = NULL; -	 -	if (CG(active_class_entry) -		&& (ZEND_ACC_TRAIT ==  -			(CG(active_class_entry)->ce_flags & ZEND_ACC_TRAIT))) { -		trait_name = CG(active_class_entry)->name; -	} -	 -	if (!trait_name) { -		trait_name = ""; -	} -	 -	zendlval->value.str.len = strlen(trait_name); -	zendlval->value.str.val = estrndup(trait_name, zendlval->value.str.len); -	zendlval->type = IS_STRING; -	 +	zend_class_entry *ce = CG(active_class_entry); +	if (ce && ce->name && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { +		ZVAL_STRINGL(zendlval, ce->name, ce->name_length, 1); +	} else { +		ZVAL_EMPTY_STRING(zendlval); +	}  	return T_TRAIT_C;  }  <ST_IN_SCRIPTING>"__FUNCTION__" { -	const char *func_name = NULL; - -	if (CG(active_op_array)) { -		func_name = CG(active_op_array)->function_name; -	} - -	if (!func_name) { -		func_name = ""; +	zend_op_array *op_array = CG(active_op_array); +	if (op_array && op_array->function_name) { +		ZVAL_STRING(zendlval, op_array->function_name, 1); +	} else { +		ZVAL_EMPTY_STRING(zendlval);  	} -	zendlval->value.str.len = strlen(func_name); -	zendlval->value.str.val = estrndup(func_name, zendlval->value.str.len); -	zendlval->type = IS_STRING;  	return T_FUNC_C;  }  <ST_IN_SCRIPTING>"__METHOD__" {  	const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL;  	const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL; -	size_t len = 0; -	if (class_name) { -		len += strlen(class_name) + 2; -	} -	if (func_name) { -		len += strlen(func_name); -	} - -	zendlval->value.str.len = zend_spprintf(&zendlval->value.str.val, 0, "%s%s%s", +	Z_STRLEN_P(zendlval) = zend_spprintf(&Z_STRVAL_P(zendlval), 0, "%s%s%s",  		class_name ? class_name : "",  		class_name && func_name ? "::" : "",  		func_name ? func_name : "" @@ -1675,8 +1630,7 @@ NEWLINE ("\r"|"\n"|"\r\n")  }  <ST_IN_SCRIPTING>"__LINE__" { -	zendlval->value.lval = CG(zend_lineno); -	zendlval->type = IS_LONG; +	ZVAL_LONG(zendlval, CG(zend_lineno));  	return T_LINE;  } @@ -1686,9 +1640,7 @@ NEWLINE ("\r"|"\n"|"\r\n")  	if (!filename) {  		filename = "";  	} -	zendlval->value.str.len = strlen(filename); -	zendlval->value.str.val = estrndup(filename, zendlval->value.str.len); -	zendlval->type = IS_STRING; +	ZVAL_STRING(zendlval, filename, 1);  	return T_FILE;  } @@ -1713,9 +1665,7 @@ NEWLINE ("\r"|"\n"|"\r\n")  #endif  	} -	zendlval->value.str.len = strlen(dirname); -	zendlval->value.str.val = dirname; -	zendlval->type = IS_STRING; +	ZVAL_STRING(zendlval, dirname, 0);  	return T_DIR;  } @@ -1739,9 +1689,7 @@ NEWLINE ("\r"|"\n"|"\r\n")  	}  	HANDLE_NEWLINES(yytext, yyleng); -	zendlval->value.str.val = yytext; /* no copying - intentional */ -	zendlval->value.str.len = yyleng; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  	BEGIN(ST_IN_SCRIPTING);  	return T_OPEN_TAG;  } @@ -1749,9 +1697,7 @@ NEWLINE ("\r"|"\n"|"\r\n")  <INITIAL>"<%=" {  	if (CG(asp_tags)) { -		zendlval->value.str.val = yytext; /* no copying - intentional */ -		zendlval->value.str.len = yyleng; -		zendlval->type = IS_STRING; +		ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  		BEGIN(ST_IN_SCRIPTING);  		return T_OPEN_TAG_WITH_ECHO;  	} else { @@ -1761,9 +1707,7 @@ NEWLINE ("\r"|"\n"|"\r\n")  <INITIAL>"<?=" { -	zendlval->value.str.val = yytext; /* no copying - intentional */ -	zendlval->value.str.len = yyleng; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  	BEGIN(ST_IN_SCRIPTING);  	return T_OPEN_TAG_WITH_ECHO;  } @@ -1771,9 +1715,7 @@ NEWLINE ("\r"|"\n"|"\r\n")  <INITIAL>"<%" {  	if (CG(asp_tags)) { -		zendlval->value.str.val = yytext; /* no copying - intentional */ -		zendlval->value.str.len = yyleng; -		zendlval->type = IS_STRING; +		ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  		BEGIN(ST_IN_SCRIPTING);  		return T_OPEN_TAG;  	} else { @@ -1783,9 +1725,7 @@ NEWLINE ("\r"|"\n"|"\r\n")  <INITIAL>"<?php"([ \t]|{NEWLINE}) { -	zendlval->value.str.val = yytext; /* no copying - intentional */ -	zendlval->value.str.len = yyleng; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  	HANDLE_NEWLINE(yytext[yyleng-1]);  	BEGIN(ST_IN_SCRIPTING);  	return T_OPEN_TAG; @@ -1794,9 +1734,7 @@ NEWLINE ("\r"|"\n"|"\r\n")  <INITIAL>"<?" {  	if (CG(short_tags)) { -		zendlval->value.str.val = yytext; /* no copying - intentional */ -		zendlval->value.str.len = yyleng; -		zendlval->type = IS_STRING; +		ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  		BEGIN(ST_IN_SCRIPTING);  		return T_OPEN_TAG;  	} else { @@ -1850,14 +1788,14 @@ inline_html:  	if (SCNG(output_filter)) {  		int readsize;  		size_t sz = 0; -		readsize = SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); -		zendlval->value.str.len = sz; +		readsize = SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); +		Z_STRLEN_P(zendlval) = sz;  		if (readsize < yyleng) {  			yyless(readsize);  		}  	} else { -	  zendlval->value.str.val = (char *) estrndup(yytext, yyleng); -	  zendlval->value.str.len = yyleng; +	  Z_STRVAL_P(zendlval) = (char *) estrndup(yytext, yyleng); +	  Z_STRLEN_P(zendlval) = yyleng;  	}  	zendlval->type = IS_STRING;  	HANDLE_NEWLINES(yytext, yyleng); @@ -1985,9 +1923,7 @@ inline_html:  }  <ST_IN_SCRIPTING>("?>"|"</script"{WHITESPACE}*">"){NEWLINE}? { -	zendlval->value.str.val = yytext; /* no copying - intentional */ -	zendlval->value.str.len = yyleng; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  	BEGIN(INITIAL);  	return T_CLOSE_TAG;  /* implicit ';' at php-end tag */  } @@ -1996,9 +1932,7 @@ inline_html:  <ST_IN_SCRIPTING>"%>"{NEWLINE}? {  	if (CG(asp_tags)) {  		BEGIN(INITIAL); -		zendlval->value.str.len = yyleng; -		zendlval->type = IS_STRING; -		zendlval->value.str.val = yytext; /* no copying - intentional */ +		ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */  		return T_CLOSE_TAG;  /* implicit ';' at php-end tag */  	} else {  		yyless(1); @@ -2032,13 +1966,11 @@ inline_html:  		}  	} -	zendlval->value.str.val = estrndup(yytext+bprefix+1, yyleng-bprefix-2); -	zendlval->value.str.len = yyleng-bprefix-2; -	zendlval->type = IS_STRING; +	ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2, 1);  	/* convert escape sequences */ -	s = t = zendlval->value.str.val; -	end = s+zendlval->value.str.len; +	s = t = Z_STRVAL_P(zendlval); +	end = s+Z_STRLEN_P(zendlval);  	while (s<end) {  		if (*s=='\\') {  			s++; @@ -2047,7 +1979,7 @@ inline_html:  				case '\\':  				case '\'':  					*t++ = *s; -					zendlval->value.str.len--; +					Z_STRLEN_P(zendlval)--;  					break;  				default:  					*t++ = '\\'; @@ -2067,9 +1999,9 @@ inline_html:  	if (SCNG(output_filter)) {  		size_t sz = 0; -		s = zendlval->value.str.val; -		SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)s, (size_t)zendlval->value.str.len TSRMLS_CC); -		zendlval->value.str.len = sz; +		s = Z_STRVAL_P(zendlval); +		SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval) TSRMLS_CC); +		Z_STRLEN_P(zendlval) = sz;  		efree(s);  	}  	return T_CONSTANT_ENCAPSED_STRING; @@ -2187,7 +2119,7 @@ inline_html:  <ST_DOUBLE_QUOTES,ST_BACKQUOTE,ST_HEREDOC>"{$" { -	zendlval->value.lval = (long) '{'; +	Z_LVAL_P(zendlval) = (long) '{';  	yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);  	yyless(1);  	return T_CURLY_OPEN;  | 
