From: Moriyoshi Koizumi Date: Thu, 24 Jul 2008 22:21:41 +0000 (+0000) Subject: - Revived zend multibyte X-Git-Tag: php-5.3.0alpha1~140 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4f42ed39c0c955b724051c2b27d69cd8c3ceacdd;p=php - Revived zend multibyte --- diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 2c020c63ec..48e5eb967a 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -4611,18 +4611,20 @@ void zend_do_declare_stmt(znode *var, znode *val TSRMLS_DC) * parseable according to the .ini script_encoding setting. We still * want to tell them to put declare() at the top. */ - if (CG(active_op_array)->last > 0) { - /* ignore ZEND_EXT_STMT and ZEND_TICKS */ + { int num = CG(active_op_array)->last; + /* ignore ZEND_EXT_STMT and ZEND_TICKS */ while (num > 0 && (CG(active_op_array)->opcodes[num-1].opcode == ZEND_EXT_STMT || CG(active_op_array)->opcodes[num-1].opcode == ZEND_TICKS)) { --num; } - if (num > 0) { - zend_error(E_COMPILE_ERROR, "Encoding declaration pragma has to be the very first statement in the script"); + + if (num > 0 || CG(encoding_declared)) { + zend_error(E_COMPILE_ERROR, "Encoding declaration pragma must be the very first statement in the script"); } - } + } + CG(encoding_declared) = 1; convert_to_string(&val->u.constant); new_encoding = zend_multibyte_fetch_encoding(val->u.constant.value.str.val); diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index 67684a4b96..53b30cfae8 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -140,8 +140,9 @@ struct _zend_compiler_globals { #ifdef ZEND_MULTIBYTE zend_encoding **script_encoding_list; - int script_encoding_list_size; + size_t script_encoding_list_size; zend_bool detect_unicode; + zend_bool encoding_declared; zend_encoding *internal_encoding; @@ -258,14 +259,14 @@ struct _zend_ini_scanner_globals { zend_file_handle *yy_in; zend_file_handle *yy_out; - unsigned int yy_leng; - unsigned char *yy_start; - unsigned char *yy_text; - unsigned char *yy_cursor; - unsigned char *yy_marker; - unsigned char *yy_limit; - int yy_state; - zend_stack state_stack; + unsigned int yy_leng; + unsigned char *yy_start; + unsigned char *yy_text; + unsigned char *yy_cursor; + unsigned char *yy_marker; + unsigned char *yy_limit; + int yy_state; + zend_stack state_stack; char *filename; int lineno; @@ -291,12 +292,12 @@ struct _zend_php_scanner_globals { #ifdef ZEND_MULTIBYTE /* original (unfiltered) script */ - char *script_org; - int script_org_size; + unsigned char *script_org; + size_t script_org_size; /* filtered script */ - char *script_filtered; - int script_filtered_size; + unsigned char *script_filtered; + size_t script_filtered_size; /* input/ouput filters */ zend_encoding_filter input_filter; diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index c8c1ea0437..fd69776bf9 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.6.dev on Tue Jul 8 16:16:41 2008 */ +/* Generated by re2c 0.13.5 on Fri Jul 25 07:14:28 2008 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -264,7 +264,7 @@ ZEND_API int open_file_for_scanning(zend_file_handle *file_handle TSRMLS_DC) if (size != -1) { #ifdef ZEND_MULTIBYTE - if (zend_multibyte_read_script(buf, size TSRMLS_CC) != 0) { + if (zend_multibyte_read_script((unsigned char *)buf, size TSRMLS_CC) != 0) { return FAILURE; } @@ -273,14 +273,14 @@ ZEND_API int open_file_for_scanning(zend_file_handle *file_handle TSRMLS_DC) zend_multibyte_set_filter(NULL TSRMLS_CC); if (!SCNG(input_filter)) { - SCNG(script_filtered) = (char*)emalloc(SCNG(script_org_size)+1); + SCNG(script_filtered) = (unsigned char*)emalloc(SCNG(script_org_size)+1); memcpy(SCNG(script_filtered), SCNG(script_org), SCNG(script_org_size)+1); SCNG(script_filtered_size) = SCNG(script_org_size); } else { SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC); } - yy_scan_buffer(SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC); + yy_scan_buffer((char *)SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC); #else /* !ZEND_MULTIBYTE */ yy_scan_buffer(buf, size TSRMLS_CC); #endif /* ZEND_MULTIBYTE */ @@ -421,20 +421,20 @@ ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename TSRMLS_D SCNG(yy_in)=NULL; #ifdef ZEND_MULTIBYTE - SCNG(script_org) = estrdup(str->value.str.val); + SCNG(script_org) = (unsigned char *)estrdup(str->value.str.val); SCNG(script_org_size) = str->value.str.len; zend_multibyte_set_filter(CG(internal_encoding) TSRMLS_CC); if (!SCNG(input_filter)) { - SCNG(script_filtered) = (char*)emalloc(SCNG(script_org_size)+1); + SCNG(script_filtered) = (unsigned char*)emalloc(SCNG(script_org_size)+1); memcpy(SCNG(script_filtered), SCNG(script_org), SCNG(script_org_size)+1); SCNG(script_filtered_size) = SCNG(script_org_size); } else { SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC); } - yy_scan_buffer(SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC); + yy_scan_buffer((char *)SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC); #else /* !ZEND_MULTIBYTE */ yy_scan_buffer(str->value.str.val, str->value.str.len TSRMLS_CC); #endif /* ZEND_MULTIBYTE */ @@ -583,10 +583,9 @@ END_EXTERN_C() BEGIN_EXTERN_C() ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter, zend_encoding *old_encoding TSRMLS_DC) { - int offset, original_offset, length, free_flag, new_len; - char *p; + size_t offset, original_offset, length, free_flag, new_len; + unsigned char *p; zend_encoding *new_encoding; - unsigned char *yy_c_buf_p; /* calculate current position */ offset = original_offset = YYCURSOR - SCNG(yy_start); @@ -611,25 +610,28 @@ ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter /* convert and set */ if (!SCNG(input_filter)) { - length = SCNG(script_org_size)-offset-1; - p = SCNG(script_org)+offset+1; + length = SCNG(script_org_size) - offset - 1; + p = SCNG(script_org) + offset + 1; free_flag = 0; } else { - SCNG(input_filter)(&p, &length, SCNG(script_org)+offset+1, SCNG(script_org_size)-offset-1 TSRMLS_CC); + SCNG(input_filter)(&p, &length, SCNG(script_org) + offset, SCNG(script_org_size) - offset TSRMLS_CC); free_flag = 1; } - new_len = original_offset+length+1; + new_len = original_offset + length; - if (new_len > YYLIMIT-SCNG(yy_start)) { - YYLIMIT = SCNG(yy_start) + new_len; - SCNG(yy_start) = erealloc(SCNG(yy_start), new_len); - SCNG(script_filtered) = SCNG(yy_start); + if (new_len > YYLIMIT - SCNG(yy_start)) { + unsigned char *new_yy_start = erealloc(SCNG(yy_start), new_len); + SCNG(yy_cursor) = new_yy_start + (SCNG(yy_cursor) - SCNG(yy_start)); + SCNG(yy_marker) = new_yy_start + (SCNG(yy_marker) - SCNG(yy_start)); + SCNG(yy_text) = new_yy_start + (SCNG(yy_text) - SCNG(yy_start)); + SCNG(yy_start) = new_yy_start; + SCNG(script_filtered) = new_yy_start; SCNG(script_filtered_size) = new_len; } - yy_c_buf_p = SCNG(yy_start) + original_offset; - strncpy(yy_c_buf_p+1, p, length); + SCNG(yy_limit) = SCNG(yy_start) + new_len; + memmove(SCNG(yy_start) + original_offset, p, length); if (free_flag) { efree(p); @@ -639,7 +641,7 @@ ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, size_t len TSRMLS_DC) { - int c = '*', n; + size_t n; if (CG(interactive) == 0) { if (zend_stream_fixup(file_handle, &buf, &len TSRMLS_CC) == FAILURE) { @@ -666,26 +668,23 @@ ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, si n = len; SCNG(script_org_size) = n; - SCNG(script_org) = (char*)emalloc(SCNG(script_org_size) + 1); + SCNG(script_org) = (unsigned char*)emalloc(SCNG(script_org_size) + 1); memcpy(SCNG(script_org), buf, n); return n; } -ZEND_API int zend_multibyte_read_script(char *buf, int n TSRMLS_DC) +ZEND_API int zend_multibyte_read_script(unsigned char *buf, size_t n TSRMLS_DC) { if (SCNG(script_org)) { efree(SCNG(script_org)); } - if (n<0) { - return -1; - } SCNG(script_org_size) = n; - SCNG(script_org) = (char*)erealloc(SCNG(script_org), SCNG(script_org_size)); + SCNG(script_org) = (unsigned char*)erealloc(SCNG(script_org), SCNG(script_org_size)); memcpy(SCNG(script_org) + SCNG(script_org_size) - n, buf, n); - SCNG(script_org) = (char*)erealloc(SCNG(script_org), SCNG(script_org_size) + 1); + SCNG(script_org) = (unsigned char*)erealloc(SCNG(script_org), SCNG(script_org_size) + 1); *(SCNG(script_org)+SCNG(script_org_size)) = '\0'; return 0; @@ -694,7 +693,9 @@ ZEND_API int zend_multibyte_read_script(char *buf, int n TSRMLS_DC) # define zend_copy_value(zendlval, yytext, yyleng) \ if (SCNG(output_filter)) { \ - SCNG(output_filter)(&(zendlval->value.str.val), &(zendlval->value.str.len), yytext, yyleng TSRMLS_CC); \ + 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; \ } else { \ zendlval->value.str.val = (char *) estrndup(yytext, yyleng); \ zendlval->value.str.len = yyleng; \ @@ -809,8 +810,10 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo *t = 0; #ifdef ZEND_MULTIBYTE if (SCNG(output_filter)) { + size_t sz = 0; s = zendlval->value.str.val; - SCNG(output_filter)(&(zendlval->value.str.val), &(zendlval->value.str.len), s, zendlval->value.str.len TSRMLS_CC); + 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; efree(s); } #endif /* ZEND_MULTIBYTE */ @@ -854,7 +857,7 @@ yymore_restart: } -#line 858 "Zend/zend_language_scanner.c" +#line 861 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -977,7 +980,7 @@ yyc_INITIAL: yy3: YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1624 "Zend/zend_language_scanner.l" +#line 1627 "Zend/zend_language_scanner.l" { inline_char_handler: @@ -1005,7 +1008,9 @@ inline_char_handler: #ifdef ZEND_MULTIBYTE if (SCNG(output_filter)) { int readsize; - readsize = SCNG(output_filter)(&(zendlval->value.str.val), &(zendlval->value.str.len), yytext, yyleng TSRMLS_CC); + 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; if (readsize < yyleng) { yyless(readsize); } @@ -1021,7 +1026,7 @@ inline_char_handler: HANDLE_NEWLINES(yytext, yyleng); return T_INLINE_HTML; } -#line 1025 "Zend/zend_language_scanner.c" +#line 1030 "Zend/zend_language_scanner.c" yy4: YYDEBUG(4, *YYCURSOR); yych = *++YYCURSOR; @@ -1039,7 +1044,7 @@ yy5: yy6: YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1612 "Zend/zend_language_scanner.l" +#line 1615 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { zendlval->value.str.val = yytext; /* no copying - intentional */ @@ -1051,14 +1056,14 @@ yy6: goto inline_char_handler; } } -#line 1055 "Zend/zend_language_scanner.c" +#line 1060 "Zend/zend_language_scanner.c" yy7: YYDEBUG(7, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy43; YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1589 "Zend/zend_language_scanner.l" +#line 1592 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { zendlval->value.str.val = yytext; /* no copying - intentional */ @@ -1070,7 +1075,7 @@ yy7: goto inline_char_handler; } } -#line 1074 "Zend/zend_language_scanner.c" +#line 1079 "Zend/zend_language_scanner.c" yy9: YYDEBUG(9, *YYCURSOR); yych = *++YYCURSOR; @@ -1256,7 +1261,7 @@ yy35: ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1553 "Zend/zend_language_scanner.l" +#line 1556 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); zendlval->value.str.val = yytext; /* no copying - intentional */ @@ -1265,7 +1270,7 @@ yy35: BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1269 "Zend/zend_language_scanner.c" +#line 1274 "Zend/zend_language_scanner.c" yy39: YYDEBUG(39, *YYCURSOR); yych = *++YYCURSOR; @@ -1292,7 +1297,7 @@ yy43: ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1563 "Zend/zend_language_scanner.l" +#line 1566 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { zendlval->value.str.val = yytext; /* no copying - intentional */ @@ -1304,13 +1309,13 @@ yy43: goto inline_char_handler; } } -#line 1308 "Zend/zend_language_scanner.c" +#line 1313 "Zend/zend_language_scanner.c" yy45: YYDEBUG(45, *YYCURSOR); ++YYCURSOR; YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1576 "Zend/zend_language_scanner.l" +#line 1579 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { zendlval->value.str.val = yytext; /* no copying - intentional */ @@ -1322,7 +1327,7 @@ yy45: goto inline_char_handler; } } -#line 1326 "Zend/zend_language_scanner.c" +#line 1331 "Zend/zend_language_scanner.c" yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; @@ -1349,7 +1354,7 @@ yy50: yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1602 "Zend/zend_language_scanner.l" +#line 1605 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -1358,7 +1363,7 @@ yy51: BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1362 "Zend/zend_language_scanner.c" +#line 1367 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; @@ -1449,13 +1454,13 @@ yy56: yy57: YYDEBUG(57, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2005 "Zend/zend_language_scanner.l" +#line 2012 "Zend/zend_language_scanner.l" { zendlval->value.lval = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_CURLY_OPEN; } -#line 1459 "Zend/zend_language_scanner.c" +#line 1464 "Zend/zend_language_scanner.c" yy58: YYDEBUG(58, *YYCURSOR); yyaccept = 1; @@ -1473,12 +1478,12 @@ yy59: yy60: YYDEBUG(60, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2030 "Zend/zend_language_scanner.l" +#line 2037 "Zend/zend_language_scanner.l" { zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1482 "Zend/zend_language_scanner.c" +#line 1487 "Zend/zend_language_scanner.c" yy61: YYDEBUG(61, *YYCURSOR); ++YYCURSOR; @@ -1490,12 +1495,12 @@ yy62: ++YYCURSOR; YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2166 "Zend/zend_language_scanner.l" +#line 2173 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; } -#line 1499 "Zend/zend_language_scanner.c" +#line 1504 "Zend/zend_language_scanner.c" yy64: YYDEBUG(64, *YYCURSOR); ++YYCURSOR; @@ -1583,13 +1588,13 @@ yy68: yy70: YYDEBUG(70, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2035 "Zend/zend_language_scanner.l" +#line 2042 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1593 "Zend/zend_language_scanner.c" +#line 1598 "Zend/zend_language_scanner.c" yy71: YYDEBUG(71, *YYCURSOR); yych = *++YYCURSOR; @@ -1623,24 +1628,24 @@ yy74: yy76: YYDEBUG(76, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1690 "Zend/zend_language_scanner.l" +#line 1695 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1633 "Zend/zend_language_scanner.c" +#line 1638 "Zend/zend_language_scanner.c" yy77: YYDEBUG(77, *YYCURSOR); ++YYCURSOR; YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1346 "Zend/zend_language_scanner.l" +#line 1349 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1644 "Zend/zend_language_scanner.c" +#line 1649 "Zend/zend_language_scanner.c" yy79: YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; @@ -1651,7 +1656,7 @@ yy80: ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1682 "Zend/zend_language_scanner.l" +#line 1687 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -1659,7 +1664,7 @@ yy80: zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1663 "Zend/zend_language_scanner.c" +#line 1668 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -1677,7 +1682,7 @@ yy83: ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1672 "Zend/zend_language_scanner.l" +#line 1677 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -1685,7 +1690,7 @@ yy83: zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1689 "Zend/zend_language_scanner.c" +#line 1694 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_COMMENT: @@ -1742,34 +1747,34 @@ yy87: } YYDEBUG(89, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1782 "Zend/zend_language_scanner.l" +#line 1787 "Zend/zend_language_scanner.l" { yymore(); } -#line 1750 "Zend/zend_language_scanner.c" +#line 1755 "Zend/zend_language_scanner.c" yy90: YYDEBUG(90, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '/') goto yy92; YYDEBUG(91, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1800 "Zend/zend_language_scanner.l" +#line 1805 "Zend/zend_language_scanner.l" { yymore(); } -#line 1761 "Zend/zend_language_scanner.c" +#line 1766 "Zend/zend_language_scanner.c" yy92: YYDEBUG(92, *YYCURSOR); ++YYCURSOR; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1794 "Zend/zend_language_scanner.l" +#line 1799 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); BEGIN(ST_IN_SCRIPTING); return T_COMMENT; } -#line 1773 "Zend/zend_language_scanner.c" +#line 1778 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOC_COMMENT: @@ -1826,28 +1831,28 @@ yy96: } YYDEBUG(98, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1782 "Zend/zend_language_scanner.l" +#line 1787 "Zend/zend_language_scanner.l" { yymore(); } -#line 1834 "Zend/zend_language_scanner.c" +#line 1839 "Zend/zend_language_scanner.c" yy99: YYDEBUG(99, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '/') goto yy101; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1800 "Zend/zend_language_scanner.l" +#line 1805 "Zend/zend_language_scanner.l" { yymore(); } -#line 1845 "Zend/zend_language_scanner.c" +#line 1850 "Zend/zend_language_scanner.c" yy101: YYDEBUG(101, *YYCURSOR); ++YYCURSOR; YYDEBUG(102, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1786 "Zend/zend_language_scanner.l" +#line 1791 "Zend/zend_language_scanner.l" { CG(doc_comment) = estrndup(yytext, yyleng); CG(doc_comment_len) = yyleng; @@ -1855,7 +1860,7 @@ yy101: BEGIN(ST_IN_SCRIPTING); return T_DOC_COMMENT; } -#line 1859 "Zend/zend_language_scanner.c" +#line 1864 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1942,13 +1947,13 @@ yy106: yy107: YYDEBUG(107, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2005 "Zend/zend_language_scanner.l" +#line 2012 "Zend/zend_language_scanner.l" { zendlval->value.lval = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_CURLY_OPEN; } -#line 1952 "Zend/zend_language_scanner.c" +#line 1957 "Zend/zend_language_scanner.c" yy108: YYDEBUG(108, *YYCURSOR); yyaccept = 1; @@ -1967,12 +1972,12 @@ yy109: yy110: YYDEBUG(110, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2012 "Zend/zend_language_scanner.l" +#line 2019 "Zend/zend_language_scanner.l" { zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1976 "Zend/zend_language_scanner.c" +#line 1981 "Zend/zend_language_scanner.c" yy111: YYDEBUG(111, *YYCURSOR); ++YYCURSOR; @@ -1984,12 +1989,12 @@ yy112: ++YYCURSOR; YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2160 "Zend/zend_language_scanner.l" +#line 2167 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; } -#line 1993 "Zend/zend_language_scanner.c" +#line 1998 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); ++YYCURSOR; @@ -2080,13 +2085,13 @@ yy118: yy120: YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2023 "Zend/zend_language_scanner.l" +#line 2030 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2090 "Zend/zend_language_scanner.c" +#line 2095 "Zend/zend_language_scanner.c" yy121: YYDEBUG(121, *YYCURSOR); yych = *++YYCURSOR; @@ -2120,24 +2125,24 @@ yy124: yy126: YYDEBUG(126, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1690 "Zend/zend_language_scanner.l" +#line 1695 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2130 "Zend/zend_language_scanner.c" +#line 2135 "Zend/zend_language_scanner.c" yy127: YYDEBUG(127, *YYCURSOR); ++YYCURSOR; YYDEBUG(128, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1346 "Zend/zend_language_scanner.l" +#line 1349 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2141 "Zend/zend_language_scanner.c" +#line 2146 "Zend/zend_language_scanner.c" yy129: YYDEBUG(129, *YYCURSOR); yych = *++YYCURSOR; @@ -2148,7 +2153,7 @@ yy130: ++YYCURSOR; YYDEBUG(131, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1682 "Zend/zend_language_scanner.l" +#line 1687 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2156,7 +2161,7 @@ yy130: zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2160 "Zend/zend_language_scanner.c" +#line 2165 "Zend/zend_language_scanner.c" yy132: YYDEBUG(132, *YYCURSOR); yych = *++YYCURSOR; @@ -2174,7 +2179,7 @@ yy133: ++YYCURSOR; YYDEBUG(134, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1672 "Zend/zend_language_scanner.l" +#line 1677 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2182,7 +2187,7 @@ yy133: zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2186 "Zend/zend_language_scanner.c" +#line 2191 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -2193,16 +2198,16 @@ yyc_ST_END_HEREDOC: ++YYCURSOR; YYDEBUG(138, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1994 "Zend/zend_language_scanner.l" +#line 2001 "Zend/zend_language_scanner.l" { - SCNG(yy_text) = Z_STRVAL_P(zendlval) = CG(heredoc); + SCNG(yy_text) = (unsigned char *)(Z_STRVAL_P(zendlval) = CG(heredoc)); SCNG(yy_leng) = Z_STRLEN_P(zendlval) = CG(heredoc_len); CG(heredoc) = NULL; CG(heredoc_len) = 0; BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 2206 "Zend/zend_language_scanner.c" +#line 2211 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_END_NOWDOC: YYDEBUG(139, *YYCURSOR); @@ -2212,16 +2217,16 @@ yyc_ST_END_NOWDOC: ++YYCURSOR; YYDEBUG(142, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2149 "Zend/zend_language_scanner.l" +#line 2156 "Zend/zend_language_scanner.l" { - SCNG(yy_text) = Z_STRVAL_P(zendlval) = CG(heredoc); + SCNG(yy_text) = (unsigned char*)(Z_STRVAL_P(zendlval) = CG(heredoc)); SCNG(yy_leng) = Z_STRLEN_P(zendlval) = CG(heredoc_len); CG(heredoc) = NULL; CG(heredoc_len) = 0; BEGIN(ST_IN_SCRIPTING); return T_END_NOWDOC; } -#line 2225 "Zend/zend_language_scanner.c" +#line 2230 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -2278,12 +2283,12 @@ yyc_ST_HEREDOC: yy145: YYDEBUG(145, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2049 "Zend/zend_language_scanner.l" +#line 2056 "Zend/zend_language_scanner.l" { zend_scan_escape_string(zendlval, yytext, yyleng, 0 TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2287 "Zend/zend_language_scanner.c" +#line 2292 "Zend/zend_language_scanner.c" yy146: YYDEBUG(146, *YYCURSOR); yych = *++YYCURSOR; @@ -2329,13 +2334,13 @@ yy147: yy148: YYDEBUG(148, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2005 "Zend/zend_language_scanner.l" +#line 2012 "Zend/zend_language_scanner.l" { zendlval->value.lval = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_CURLY_OPEN; } -#line 2339 "Zend/zend_language_scanner.c" +#line 2344 "Zend/zend_language_scanner.c" yy149: YYDEBUG(149, *YYCURSOR); yyaccept = 0; @@ -2586,13 +2591,13 @@ yy165: yy167: YYDEBUG(167, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2054 "Zend/zend_language_scanner.l" +#line 2061 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_scan_escape_string(zendlval, yytext, yyleng, 0 TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2596 "Zend/zend_language_scanner.c" +#line 2601 "Zend/zend_language_scanner.c" yy168: YYDEBUG(168, *YYCURSOR); yyaccept = 2; @@ -2691,7 +2696,7 @@ yy174: ++YYCURSOR; YYDEBUG(175, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1954 "Zend/zend_language_scanner.l" +#line 1961 "Zend/zend_language_scanner.l" { char *end = yytext + yyleng - 1; @@ -2731,7 +2736,7 @@ yy174: yymore(); } } -#line 2735 "Zend/zend_language_scanner.c" +#line 2740 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); yyaccept = 2; @@ -2991,24 +2996,24 @@ yy195: yy197: YYDEBUG(197, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1690 "Zend/zend_language_scanner.l" +#line 1695 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 3001 "Zend/zend_language_scanner.c" +#line 3006 "Zend/zend_language_scanner.c" yy198: YYDEBUG(198, *YYCURSOR); ++YYCURSOR; YYDEBUG(199, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1346 "Zend/zend_language_scanner.l" +#line 1349 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 3012 "Zend/zend_language_scanner.c" +#line 3017 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); yych = *++YYCURSOR; @@ -3019,7 +3024,7 @@ yy201: ++YYCURSOR; YYDEBUG(202, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1682 "Zend/zend_language_scanner.l" +#line 1687 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -3027,7 +3032,7 @@ yy201: zendlval->type = IS_STRING; return T_VARIABLE; } -#line 3031 "Zend/zend_language_scanner.c" +#line 3036 "Zend/zend_language_scanner.c" yy203: YYDEBUG(203, *YYCURSOR); yych = *++YYCURSOR; @@ -3045,7 +3050,7 @@ yy204: ++YYCURSOR; YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1672 "Zend/zend_language_scanner.l" +#line 1677 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -3053,7 +3058,7 @@ yy204: zendlval->type = IS_STRING; return T_VARIABLE; } -#line 3057 "Zend/zend_language_scanner.c" +#line 3062 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -3268,13 +3273,13 @@ yy208: yy209: YYDEBUG(209, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1714 "Zend/zend_language_scanner.l" +#line 1719 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 3278 "Zend/zend_language_scanner.c" +#line 3283 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); yych = *++YYCURSOR; @@ -3521,11 +3526,11 @@ yy222: yy223: YYDEBUG(223, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1335 "Zend/zend_language_scanner.l" +#line 1338 "Zend/zend_language_scanner.l" { return yytext[0]; } -#line 3529 "Zend/zend_language_scanner.c" +#line 3534 "Zend/zend_language_scanner.c" yy224: YYDEBUG(224, *YYCURSOR); ++YYCURSOR; @@ -3534,7 +3539,7 @@ yy224: yy225: YYDEBUG(225, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1074 "Zend/zend_language_scanner.l" +#line 1077 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -3542,7 +3547,7 @@ yy225: HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 3546 "Zend/zend_language_scanner.c" +#line 3551 "Zend/zend_language_scanner.c" yy226: YYDEBUG(226, *YYCURSOR); yych = *++YYCURSOR; @@ -3775,18 +3780,18 @@ yy250: ++YYCURSOR; YYDEBUG(251, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1340 "Zend/zend_language_scanner.l" +#line 1343 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } -#line 3784 "Zend/zend_language_scanner.c" +#line 3789 "Zend/zend_language_scanner.c" yy252: YYDEBUG(252, *YYCURSOR); ++YYCURSOR; YYDEBUG(253, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1352 "Zend/zend_language_scanner.l" +#line 1355 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -3794,7 +3799,7 @@ yy252: } return '}'; } -#line 3798 "Zend/zend_language_scanner.c" +#line 3803 "Zend/zend_language_scanner.c" yy254: YYDEBUG(254, *YYCURSOR); yyaccept = 2; @@ -3817,7 +3822,7 @@ yy254: yy255: YYDEBUG(255, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1378 "Zend/zend_language_scanner.l" +#line 1381 "Zend/zend_language_scanner.l" { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ zendlval->value.lval = strtol(yytext, NULL, 0); @@ -3838,7 +3843,7 @@ yy255: zendlval->type = IS_LONG; return T_LNUMBER; } -#line 3842 "Zend/zend_language_scanner.c" +#line 3847 "Zend/zend_language_scanner.c" yy256: YYDEBUG(256, *YYCURSOR); yyaccept = 2; @@ -3866,12 +3871,12 @@ yy258: yy259: YYDEBUG(259, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1721 "Zend/zend_language_scanner.l" +#line 1726 "Zend/zend_language_scanner.l" { BEGIN(ST_ONE_LINE_COMMENT); yymore(); } -#line 3875 "Zend/zend_language_scanner.c" +#line 3880 "Zend/zend_language_scanner.c" yy260: YYDEBUG(260, *YYCURSOR); yyaccept = 3; @@ -3880,12 +3885,12 @@ yy260: yy261: YYDEBUG(261, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1886 "Zend/zend_language_scanner.l" +#line 1893 "Zend/zend_language_scanner.l" { BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 3889 "Zend/zend_language_scanner.c" +#line 3894 "Zend/zend_language_scanner.c" yy262: YYDEBUG(262, *YYCURSOR); yyaccept = 4; @@ -3894,23 +3899,23 @@ yy262: yy263: YYDEBUG(263, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2172 "Zend/zend_language_scanner.l" +#line 2179 "Zend/zend_language_scanner.l" { zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3903 "Zend/zend_language_scanner.c" +#line 3908 "Zend/zend_language_scanner.c" yy264: YYDEBUG(264, *YYCURSOR); ++YYCURSOR; YYDEBUG(265, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1914 "Zend/zend_language_scanner.l" +#line 1921 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 3914 "Zend/zend_language_scanner.c" +#line 3919 "Zend/zend_language_scanner.c" yy266: YYDEBUG(266, *YYCURSOR); yych = *++YYCURSOR; @@ -3936,7 +3941,7 @@ yy270: ++YYCURSOR; YYDEBUG(271, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1837 "Zend/zend_language_scanner.l" +#line 1842 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3977,14 +3982,16 @@ yy270: #ifdef ZEND_MULTIBYTE if (SCNG(output_filter)) { + size_t sz = 0; s = zendlval->value.str.val; - SCNG(output_filter)(&(zendlval->value.str.val), &(zendlval->value.str.len), s, zendlval->value.str.len TSRMLS_CC); + 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; efree(s); } #endif /* ZEND_MULTIBYTE */ return T_CONSTANT_ENCAPSED_STRING; } -#line 3988 "Zend/zend_language_scanner.c" +#line 3995 "Zend/zend_language_scanner.c" yy272: YYDEBUG(272, *YYCURSOR); ++YYCURSOR; @@ -4081,14 +4088,14 @@ yy280: ++YYCURSOR; YYDEBUG(281, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1829 "Zend/zend_language_scanner.l" +#line 1834 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"' TSRMLS_CC); return T_CONSTANT_ENCAPSED_STRING; } -#line 4092 "Zend/zend_language_scanner.c" +#line 4099 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); ++YYCURSOR; @@ -4121,13 +4128,13 @@ yy285: yy287: YYDEBUG(287, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1439 "Zend/zend_language_scanner.l" +#line 1442 "Zend/zend_language_scanner.l" { zendlval->value.dval = zend_strtod(yytext, NULL); zendlval->type = IS_DOUBLE; return T_DNUMBER; } -#line 4131 "Zend/zend_language_scanner.c" +#line 4138 "Zend/zend_language_scanner.c" yy288: YYDEBUG(288, *YYCURSOR); yyaccept = 2; @@ -4189,7 +4196,7 @@ yy295: } YYDEBUG(297, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1399 "Zend/zend_language_scanner.l" +#line 1402 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -4210,7 +4217,7 @@ yy295: return T_DNUMBER; } } -#line 4214 "Zend/zend_language_scanner.c" +#line 4221 "Zend/zend_language_scanner.c" yy298: YYDEBUG(298, *YYCURSOR); ++YYCURSOR; @@ -4219,7 +4226,7 @@ yy298: yy299: YYDEBUG(299, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1804 "Zend/zend_language_scanner.l" +#line 1809 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -4227,7 +4234,7 @@ yy299: BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 4231 "Zend/zend_language_scanner.c" +#line 4238 "Zend/zend_language_scanner.c" yy300: YYDEBUG(300, *YYCURSOR); yych = *++YYCURSOR; @@ -4261,13 +4268,13 @@ yy302: yy304: YYDEBUG(304, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1690 "Zend/zend_language_scanner.l" +#line 1695 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 4271 "Zend/zend_language_scanner.c" +#line 4278 "Zend/zend_language_scanner.c" yy305: YYDEBUG(305, *YYCURSOR); yych = *++YYCURSOR; @@ -4281,11 +4288,11 @@ yy306: } YYDEBUG(307, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1323 "Zend/zend_language_scanner.l" +#line 1326 "Zend/zend_language_scanner.l" { return T_LOGICAL_XOR; } -#line 4289 "Zend/zend_language_scanner.c" +#line 4296 "Zend/zend_language_scanner.c" yy308: YYDEBUG(308, *YYCURSOR); ++YYCURSOR; @@ -4294,61 +4301,61 @@ yy308: } YYDEBUG(309, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1315 "Zend/zend_language_scanner.l" +#line 1318 "Zend/zend_language_scanner.l" { return T_LOGICAL_OR; } -#line 4302 "Zend/zend_language_scanner.c" +#line 4309 "Zend/zend_language_scanner.c" yy310: YYDEBUG(310, *YYCURSOR); ++YYCURSOR; YYDEBUG(311, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1303 "Zend/zend_language_scanner.l" +#line 1306 "Zend/zend_language_scanner.l" { return T_XOR_EQUAL; } -#line 4312 "Zend/zend_language_scanner.c" +#line 4319 "Zend/zend_language_scanner.c" yy312: YYDEBUG(312, *YYCURSOR); ++YYCURSOR; YYDEBUG(313, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1307 "Zend/zend_language_scanner.l" +#line 1310 "Zend/zend_language_scanner.l" { return T_BOOLEAN_OR; } -#line 4322 "Zend/zend_language_scanner.c" +#line 4329 "Zend/zend_language_scanner.c" yy314: YYDEBUG(314, *YYCURSOR); ++YYCURSOR; YYDEBUG(315, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1299 "Zend/zend_language_scanner.l" +#line 1302 "Zend/zend_language_scanner.l" { return T_OR_EQUAL; } -#line 4332 "Zend/zend_language_scanner.c" +#line 4339 "Zend/zend_language_scanner.c" yy316: YYDEBUG(316, *YYCURSOR); ++YYCURSOR; YYDEBUG(317, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1311 "Zend/zend_language_scanner.l" +#line 1314 "Zend/zend_language_scanner.l" { return T_BOOLEAN_AND; } -#line 4342 "Zend/zend_language_scanner.c" +#line 4349 "Zend/zend_language_scanner.c" yy318: YYDEBUG(318, *YYCURSOR); ++YYCURSOR; YYDEBUG(319, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1295 "Zend/zend_language_scanner.l" +#line 1298 "Zend/zend_language_scanner.l" { return T_AND_EQUAL; } -#line 4352 "Zend/zend_language_scanner.c" +#line 4359 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); ++YYCURSOR; @@ -4357,7 +4364,7 @@ yy320: yy321: YYDEBUG(321, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1813 "Zend/zend_language_scanner.l" +#line 1818 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -4370,17 +4377,17 @@ yy321: return yytext[0]; } } -#line 4374 "Zend/zend_language_scanner.c" +#line 4381 "Zend/zend_language_scanner.c" yy322: YYDEBUG(322, *YYCURSOR); ++YYCURSOR; YYDEBUG(323, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1283 "Zend/zend_language_scanner.l" +#line 1286 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 4384 "Zend/zend_language_scanner.c" +#line 4391 "Zend/zend_language_scanner.c" yy324: YYDEBUG(324, *YYCURSOR); yych = *++YYCURSOR; @@ -4411,11 +4418,11 @@ yy328: ++YYCURSOR; YYDEBUG(329, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1279 "Zend/zend_language_scanner.l" +#line 1282 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 4419 "Zend/zend_language_scanner.c" +#line 4426 "Zend/zend_language_scanner.c" yy330: YYDEBUG(330, *YYCURSOR); yyaccept = 6; @@ -4424,12 +4431,12 @@ yy330: yy331: YYDEBUG(331, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1776 "Zend/zend_language_scanner.l" +#line 1781 "Zend/zend_language_scanner.l" { BEGIN(ST_COMMENT); yymore(); } -#line 4433 "Zend/zend_language_scanner.c" +#line 4440 "Zend/zend_language_scanner.c" yy332: YYDEBUG(332, *YYCURSOR); yych = *++YYCURSOR; @@ -4439,11 +4446,11 @@ yy333: ++YYCURSOR; YYDEBUG(334, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1275 "Zend/zend_language_scanner.l" +#line 1278 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 4447 "Zend/zend_language_scanner.c" +#line 4454 "Zend/zend_language_scanner.c" yy335: YYDEBUG(335, *YYCURSOR); yych = *++YYCURSOR; @@ -4462,54 +4469,54 @@ yy336: } YYDEBUG(338, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1770 "Zend/zend_language_scanner.l" +#line 1775 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); BEGIN(ST_DOC_COMMENT); yymore(); } -#line 4472 "Zend/zend_language_scanner.c" +#line 4479 "Zend/zend_language_scanner.c" yy339: YYDEBUG(339, *YYCURSOR); ++YYCURSOR; YYDEBUG(340, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1271 "Zend/zend_language_scanner.l" +#line 1274 "Zend/zend_language_scanner.l" { return T_MUL_EQUAL; } -#line 4482 "Zend/zend_language_scanner.c" +#line 4489 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy345; YYDEBUG(342, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1331 "Zend/zend_language_scanner.l" +#line 1334 "Zend/zend_language_scanner.l" { return T_SR; } -#line 4493 "Zend/zend_language_scanner.c" +#line 4500 "Zend/zend_language_scanner.c" yy343: YYDEBUG(343, *YYCURSOR); ++YYCURSOR; YYDEBUG(344, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1259 "Zend/zend_language_scanner.l" +#line 1262 "Zend/zend_language_scanner.l" { return T_IS_GREATER_OR_EQUAL; } -#line 4503 "Zend/zend_language_scanner.c" +#line 4510 "Zend/zend_language_scanner.c" yy345: YYDEBUG(345, *YYCURSOR); ++YYCURSOR; YYDEBUG(346, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1291 "Zend/zend_language_scanner.l" +#line 1294 "Zend/zend_language_scanner.l" { return T_SR_EQUAL; } -#line 4513 "Zend/zend_language_scanner.c" +#line 4520 "Zend/zend_language_scanner.c" yy347: YYDEBUG(347, *YYCURSOR); yyaccept = 7; @@ -4520,11 +4527,11 @@ yy347: yy348: YYDEBUG(348, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1327 "Zend/zend_language_scanner.l" +#line 1330 "Zend/zend_language_scanner.l" { return T_SL; } -#line 4528 "Zend/zend_language_scanner.c" +#line 4535 "Zend/zend_language_scanner.c" yy349: YYDEBUG(349, *YYCURSOR); yych = *++YYCURSOR; @@ -4536,22 +4543,22 @@ yy350: ++YYCURSOR; YYDEBUG(351, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1255 "Zend/zend_language_scanner.l" +#line 1258 "Zend/zend_language_scanner.l" { return T_IS_SMALLER_OR_EQUAL; } -#line 4544 "Zend/zend_language_scanner.c" +#line 4551 "Zend/zend_language_scanner.c" yy352: YYDEBUG(352, *YYCURSOR); ++YYCURSOR; yy353: YYDEBUG(353, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1251 "Zend/zend_language_scanner.l" +#line 1254 "Zend/zend_language_scanner.l" { return T_IS_NOT_EQUAL; } -#line 4555 "Zend/zend_language_scanner.c" +#line 4562 "Zend/zend_language_scanner.c" yy354: YYDEBUG(354, *YYCURSOR); yych = *++YYCURSOR; @@ -4602,11 +4609,11 @@ yy361: ++YYCURSOR; YYDEBUG(362, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1287 "Zend/zend_language_scanner.l" +#line 1290 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 4610 "Zend/zend_language_scanner.c" +#line 4617 "Zend/zend_language_scanner.c" yy363: YYDEBUG(363, *YYCURSOR); ++YYCURSOR; @@ -4713,7 +4720,7 @@ yy372: yy373: YYDEBUG(373, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1892 "Zend/zend_language_scanner.l" +#line 1899 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -4734,7 +4741,7 @@ yy373: BEGIN(ST_START_HEREDOC); return T_START_HEREDOC; } -#line 4738 "Zend/zend_language_scanner.c" +#line 4745 "Zend/zend_language_scanner.c" yy374: YYDEBUG(374, *YYCURSOR); yych = *++YYCURSOR; @@ -4776,7 +4783,7 @@ yy378: yy379: YYDEBUG(379, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2063 "Zend/zend_language_scanner.l" +#line 2070 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '<') ? 1 : 0; char *s; @@ -4793,7 +4800,7 @@ yy379: BEGIN(ST_START_NOWDOC); return T_START_NOWDOC; } -#line 4797 "Zend/zend_language_scanner.c" +#line 4804 "Zend/zend_language_scanner.c" yy380: YYDEBUG(380, *YYCURSOR); yych = *++YYCURSOR; @@ -4807,31 +4814,31 @@ yy381: ++YYCURSOR; YYDEBUG(383, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1243 "Zend/zend_language_scanner.l" +#line 1246 "Zend/zend_language_scanner.l" { return T_IS_NOT_IDENTICAL; } -#line 4815 "Zend/zend_language_scanner.c" +#line 4822 "Zend/zend_language_scanner.c" yy384: YYDEBUG(384, *YYCURSOR); ++YYCURSOR; YYDEBUG(385, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1263 "Zend/zend_language_scanner.l" +#line 1266 "Zend/zend_language_scanner.l" { return T_PLUS_EQUAL; } -#line 4825 "Zend/zend_language_scanner.c" +#line 4832 "Zend/zend_language_scanner.c" yy386: YYDEBUG(386, *YYCURSOR); ++YYCURSOR; YYDEBUG(387, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1231 "Zend/zend_language_scanner.l" +#line 1234 "Zend/zend_language_scanner.l" { return T_INC; } -#line 4835 "Zend/zend_language_scanner.c" +#line 4842 "Zend/zend_language_scanner.c" yy388: YYDEBUG(388, *YYCURSOR); yych = *++YYCURSOR; @@ -4850,42 +4857,42 @@ yy390: } YYDEBUG(391, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1223 "Zend/zend_language_scanner.l" +#line 1226 "Zend/zend_language_scanner.l" { return T_LIST; } -#line 4858 "Zend/zend_language_scanner.c" +#line 4865 "Zend/zend_language_scanner.c" yy392: YYDEBUG(392, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy396; YYDEBUG(393, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1247 "Zend/zend_language_scanner.l" +#line 1250 "Zend/zend_language_scanner.l" { return T_IS_EQUAL; } -#line 4869 "Zend/zend_language_scanner.c" +#line 4876 "Zend/zend_language_scanner.c" yy394: YYDEBUG(394, *YYCURSOR); ++YYCURSOR; YYDEBUG(395, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1219 "Zend/zend_language_scanner.l" +#line 1222 "Zend/zend_language_scanner.l" { return T_DOUBLE_ARROW; } -#line 4879 "Zend/zend_language_scanner.c" +#line 4886 "Zend/zend_language_scanner.c" yy396: YYDEBUG(396, *YYCURSOR); ++YYCURSOR; YYDEBUG(397, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1239 "Zend/zend_language_scanner.l" +#line 1242 "Zend/zend_language_scanner.l" { return T_IS_IDENTICAL; } -#line 4889 "Zend/zend_language_scanner.c" +#line 4896 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; @@ -4977,7 +4984,7 @@ yy405: } YYDEBUG(416, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1543 "Zend/zend_language_scanner.l" +#line 1546 "Zend/zend_language_scanner.l" { if (CG(current_namespace)) { *zendlval = *CG(current_namespace); @@ -4987,7 +4994,7 @@ yy405: } return T_NS_C; } -#line 4991 "Zend/zend_language_scanner.c" +#line 4998 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -5005,7 +5012,7 @@ yy417: } YYDEBUG(421, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1516 "Zend/zend_language_scanner.l" +#line 1519 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); const size_t filename_len = strlen(filename); @@ -5032,7 +5039,7 @@ yy417: zendlval->type = IS_STRING; return T_DIR; } -#line 5036 "Zend/zend_language_scanner.c" +#line 5043 "Zend/zend_language_scanner.c" yy422: YYDEBUG(422, *YYCURSOR); yych = *++YYCURSOR; @@ -5053,13 +5060,13 @@ yy422: } YYDEBUG(427, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1498 "Zend/zend_language_scanner.l" +#line 1501 "Zend/zend_language_scanner.l" { zendlval->value.lval = CG(zend_lineno); zendlval->type = IS_LONG; return T_LINE; } -#line 5063 "Zend/zend_language_scanner.c" +#line 5070 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; @@ -5086,7 +5093,7 @@ yy428: } YYDEBUG(435, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1477 "Zend/zend_language_scanner.l" +#line 1480 "Zend/zend_language_scanner.l" { char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL; char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL; @@ -5107,7 +5114,7 @@ yy428: zendlval->type = IS_STRING; return T_METHOD_C; } -#line 5111 "Zend/zend_language_scanner.c" +#line 5118 "Zend/zend_language_scanner.c" yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; @@ -5145,7 +5152,7 @@ yy437: } YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1461 "Zend/zend_language_scanner.l" +#line 1464 "Zend/zend_language_scanner.l" { char *func_name = NULL; @@ -5161,7 +5168,7 @@ yy437: zendlval->type = IS_STRING; return T_FUNC_C; } -#line 5165 "Zend/zend_language_scanner.c" +#line 5172 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; @@ -5179,7 +5186,7 @@ yy447: } YYDEBUG(451, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1504 "Zend/zend_language_scanner.l" +#line 1507 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); @@ -5191,7 +5198,7 @@ yy447: zendlval->type = IS_STRING; return T_FILE; } -#line 5195 "Zend/zend_language_scanner.c" +#line 5202 "Zend/zend_language_scanner.c" yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; @@ -5215,7 +5222,7 @@ yy452: } YYDEBUG(458, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1445 "Zend/zend_language_scanner.l" +#line 1448 "Zend/zend_language_scanner.l" { char *class_name = NULL; @@ -5231,7 +5238,7 @@ yy452: zendlval->type = IS_STRING; return T_CLASS_C; } -#line 5235 "Zend/zend_language_scanner.c" +#line 5242 "Zend/zend_language_scanner.c" yy459: YYDEBUG(459, *YYCURSOR); yych = *++YYCURSOR; @@ -5293,11 +5300,11 @@ yy470: } YYDEBUG(471, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1187 "Zend/zend_language_scanner.l" +#line 1190 "Zend/zend_language_scanner.l" { return T_HALT_COMPILER; } -#line 5301 "Zend/zend_language_scanner.c" +#line 5308 "Zend/zend_language_scanner.c" yy472: YYDEBUG(472, *YYCURSOR); yych = *++YYCURSOR; @@ -5317,11 +5324,11 @@ yy474: } YYDEBUG(475, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1171 "Zend/zend_language_scanner.l" +#line 1174 "Zend/zend_language_scanner.l" { return T_USE; } -#line 5325 "Zend/zend_language_scanner.c" +#line 5332 "Zend/zend_language_scanner.c" yy476: YYDEBUG(476, *YYCURSOR); yych = *++YYCURSOR; @@ -5340,11 +5347,11 @@ yy478: } YYDEBUG(479, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1215 "Zend/zend_language_scanner.l" +#line 1218 "Zend/zend_language_scanner.l" { return T_UNSET; } -#line 5348 "Zend/zend_language_scanner.c" +#line 5355 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); ++YYCURSOR; @@ -5516,11 +5523,11 @@ yy495: ++YYCURSOR; YYDEBUG(497, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1115 "Zend/zend_language_scanner.l" +#line 1118 "Zend/zend_language_scanner.l" { return T_INT_CAST; } -#line 5524 "Zend/zend_language_scanner.c" +#line 5531 "Zend/zend_language_scanner.c" yy498: YYDEBUG(498, *YYCURSOR); yych = *++YYCURSOR; @@ -5564,11 +5571,11 @@ yy503: ++YYCURSOR; YYDEBUG(506, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1119 "Zend/zend_language_scanner.l" +#line 1122 "Zend/zend_language_scanner.l" { return T_DOUBLE_CAST; } -#line 5572 "Zend/zend_language_scanner.c" +#line 5579 "Zend/zend_language_scanner.c" yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; @@ -5638,11 +5645,11 @@ yy517: ++YYCURSOR; YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1123 "Zend/zend_language_scanner.l" +#line 1126 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 5646 "Zend/zend_language_scanner.c" +#line 5653 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5675,11 +5682,11 @@ yy524: ++YYCURSOR; YYDEBUG(527, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1131 "Zend/zend_language_scanner.l" +#line 1134 "Zend/zend_language_scanner.l" { return T_ARRAY_CAST; } -#line 5683 "Zend/zend_language_scanner.c" +#line 5690 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; @@ -5717,11 +5724,11 @@ yy532: ++YYCURSOR; YYDEBUG(535, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1135 "Zend/zend_language_scanner.l" +#line 1138 "Zend/zend_language_scanner.l" { return T_OBJECT_CAST; } -#line 5725 "Zend/zend_language_scanner.c" +#line 5732 "Zend/zend_language_scanner.c" yy536: YYDEBUG(536, *YYCURSOR); yych = *++YYCURSOR; @@ -5762,11 +5769,11 @@ yy541: ++YYCURSOR; YYDEBUG(543, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1139 "Zend/zend_language_scanner.l" +#line 1142 "Zend/zend_language_scanner.l" { return T_BOOL_CAST; } -#line 5770 "Zend/zend_language_scanner.c" +#line 5777 "Zend/zend_language_scanner.c" yy544: YYDEBUG(544, *YYCURSOR); yych = *++YYCURSOR; @@ -5810,11 +5817,11 @@ yy549: ++YYCURSOR; YYDEBUG(552, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1127 "Zend/zend_language_scanner.l" +#line 1130 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 5818 "Zend/zend_language_scanner.c" +#line 5825 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; @@ -5847,11 +5854,11 @@ yy556: ++YYCURSOR; YYDEBUG(559, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1143 "Zend/zend_language_scanner.l" +#line 1146 "Zend/zend_language_scanner.l" { return T_UNSET_CAST; } -#line 5855 "Zend/zend_language_scanner.c" +#line 5862 "Zend/zend_language_scanner.c" yy560: YYDEBUG(560, *YYCURSOR); yych = *++YYCURSOR; @@ -5865,11 +5872,11 @@ yy561: } YYDEBUG(562, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1111 "Zend/zend_language_scanner.l" +#line 1114 "Zend/zend_language_scanner.l" { return T_VAR; } -#line 5873 "Zend/zend_language_scanner.c" +#line 5880 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; @@ -5889,11 +5896,11 @@ yy565: } YYDEBUG(566, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1103 "Zend/zend_language_scanner.l" +#line 1106 "Zend/zend_language_scanner.l" { return T_NEW; } -#line 5897 "Zend/zend_language_scanner.c" +#line 5904 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; @@ -5932,21 +5939,21 @@ yy573: } YYDEBUG(574, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1167 "Zend/zend_language_scanner.l" +#line 1170 "Zend/zend_language_scanner.l" { return T_NAMESPACE; } -#line 5940 "Zend/zend_language_scanner.c" +#line 5947 "Zend/zend_language_scanner.c" yy575: YYDEBUG(575, *YYCURSOR); ++YYCURSOR; YYDEBUG(576, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1099 "Zend/zend_language_scanner.l" +#line 1102 "Zend/zend_language_scanner.l" { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 5950 "Zend/zend_language_scanner.c" +#line 5957 "Zend/zend_language_scanner.c" yy577: YYDEBUG(577, *YYCURSOR); ++YYCURSOR; @@ -5968,32 +5975,32 @@ yy579: ++YYCURSOR; YYDEBUG(580, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1267 "Zend/zend_language_scanner.l" +#line 1270 "Zend/zend_language_scanner.l" { return T_MINUS_EQUAL; } -#line 5976 "Zend/zend_language_scanner.c" +#line 5983 "Zend/zend_language_scanner.c" yy581: YYDEBUG(581, *YYCURSOR); ++YYCURSOR; YYDEBUG(582, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1235 "Zend/zend_language_scanner.l" +#line 1238 "Zend/zend_language_scanner.l" { return T_DEC; } -#line 5986 "Zend/zend_language_scanner.c" +#line 5993 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; YYDEBUG(584, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1069 "Zend/zend_language_scanner.l" +#line 1072 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); return T_OBJECT_OPERATOR; } -#line 5997 "Zend/zend_language_scanner.c" +#line 6004 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; @@ -6038,11 +6045,11 @@ yy590: } YYDEBUG(591, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1211 "Zend/zend_language_scanner.l" +#line 1214 "Zend/zend_language_scanner.l" { return T_PUBLIC; } -#line 6046 "Zend/zend_language_scanner.c" +#line 6053 "Zend/zend_language_scanner.c" yy592: YYDEBUG(592, *YYCURSOR); yych = *++YYCURSOR; @@ -6097,11 +6104,11 @@ yy599: } YYDEBUG(600, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1207 "Zend/zend_language_scanner.l" +#line 1210 "Zend/zend_language_scanner.l" { return T_PROTECTED; } -#line 6105 "Zend/zend_language_scanner.c" +#line 6112 "Zend/zend_language_scanner.c" yy601: YYDEBUG(601, *YYCURSOR); yych = *++YYCURSOR; @@ -6131,11 +6138,11 @@ yy605: } YYDEBUG(606, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1203 "Zend/zend_language_scanner.l" +#line 1206 "Zend/zend_language_scanner.l" { return T_PRIVATE; } -#line 6139 "Zend/zend_language_scanner.c" +#line 6146 "Zend/zend_language_scanner.c" yy607: YYDEBUG(607, *YYCURSOR); ++YYCURSOR; @@ -6144,11 +6151,11 @@ yy607: } YYDEBUG(608, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1049 "Zend/zend_language_scanner.l" +#line 1052 "Zend/zend_language_scanner.l" { return T_PRINT; } -#line 6152 "Zend/zend_language_scanner.c" +#line 6159 "Zend/zend_language_scanner.c" yy609: YYDEBUG(609, *YYCURSOR); yych = *++YYCURSOR; @@ -6173,11 +6180,11 @@ yy612: } YYDEBUG(613, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1041 "Zend/zend_language_scanner.l" +#line 1044 "Zend/zend_language_scanner.l" { return T_GOTO; } -#line 6181 "Zend/zend_language_scanner.c" +#line 6188 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6201,11 +6208,11 @@ yy617: } YYDEBUG(618, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1175 "Zend/zend_language_scanner.l" +#line 1178 "Zend/zend_language_scanner.l" { return T_GLOBAL; } -#line 6209 "Zend/zend_language_scanner.c" +#line 6216 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -6239,11 +6246,11 @@ yy624: } YYDEBUG(625, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1033 "Zend/zend_language_scanner.l" +#line 1036 "Zend/zend_language_scanner.l" { return T_BREAK; } -#line 6247 "Zend/zend_language_scanner.c" +#line 6254 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@ -6283,11 +6290,11 @@ yy632: } YYDEBUG(633, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1017 "Zend/zend_language_scanner.l" +#line 1020 "Zend/zend_language_scanner.l" { return T_SWITCH; } -#line 6291 "Zend/zend_language_scanner.c" +#line 6298 "Zend/zend_language_scanner.c" yy634: YYDEBUG(634, *YYCURSOR); yych = *++YYCURSOR; @@ -6311,11 +6318,11 @@ yy637: } YYDEBUG(638, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1191 "Zend/zend_language_scanner.l" +#line 1194 "Zend/zend_language_scanner.l" { return T_STATIC; } -#line 6319 "Zend/zend_language_scanner.c" +#line 6326 "Zend/zend_language_scanner.c" yy639: YYDEBUG(639, *YYCURSOR); yych = *++YYCURSOR; @@ -6342,11 +6349,11 @@ yy642: } YYDEBUG(643, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1013 "Zend/zend_language_scanner.l" +#line 1016 "Zend/zend_language_scanner.l" { return T_AS; } -#line 6350 "Zend/zend_language_scanner.c" +#line 6357 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; @@ -6365,11 +6372,11 @@ yy646: } YYDEBUG(647, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1227 "Zend/zend_language_scanner.l" +#line 1230 "Zend/zend_language_scanner.l" { return T_ARRAY; } -#line 6373 "Zend/zend_language_scanner.c" +#line 6380 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); ++YYCURSOR; @@ -6378,11 +6385,11 @@ yy648: } YYDEBUG(649, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1319 "Zend/zend_language_scanner.l" +#line 1322 "Zend/zend_language_scanner.l" { return T_LOGICAL_AND; } -#line 6386 "Zend/zend_language_scanner.c" +#line 6393 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; @@ -6416,11 +6423,11 @@ yy655: } YYDEBUG(656, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1195 "Zend/zend_language_scanner.l" +#line 1198 "Zend/zend_language_scanner.l" { return T_ABSTRACT; } -#line 6424 "Zend/zend_language_scanner.c" +#line 6431 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; @@ -6444,11 +6451,11 @@ yy660: } YYDEBUG(661, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 973 "Zend/zend_language_scanner.l" +#line 976 "Zend/zend_language_scanner.l" { return T_WHILE; } -#line 6452 "Zend/zend_language_scanner.c" +#line 6459 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); ++YYCURSOR; @@ -6457,11 +6464,11 @@ yy662: } YYDEBUG(663, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 957 "Zend/zend_language_scanner.l" +#line 960 "Zend/zend_language_scanner.l" { return T_IF; } -#line 6465 "Zend/zend_language_scanner.c" +#line 6472 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; @@ -6513,11 +6520,11 @@ yy669: } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1179 "Zend/zend_language_scanner.l" +#line 1182 "Zend/zend_language_scanner.l" { return T_ISSET; } -#line 6521 "Zend/zend_language_scanner.c" +#line 6528 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6571,11 +6578,11 @@ yy677: yy678: YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1151 "Zend/zend_language_scanner.l" +#line 1154 "Zend/zend_language_scanner.l" { return T_INCLUDE; } -#line 6579 "Zend/zend_language_scanner.c" +#line 6586 "Zend/zend_language_scanner.c" yy679: YYDEBUG(679, *YYCURSOR); yych = *++YYCURSOR; @@ -6604,11 +6611,11 @@ yy683: } YYDEBUG(684, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1155 "Zend/zend_language_scanner.l" +#line 1158 "Zend/zend_language_scanner.l" { return T_INCLUDE_ONCE; } -#line 6612 "Zend/zend_language_scanner.c" +#line 6619 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; @@ -6642,11 +6649,11 @@ yy690: } YYDEBUG(691, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1057 "Zend/zend_language_scanner.l" +#line 1060 "Zend/zend_language_scanner.l" { return T_INTERFACE; } -#line 6650 "Zend/zend_language_scanner.c" +#line 6657 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); yych = *++YYCURSOR; @@ -6685,11 +6692,11 @@ yy698: } YYDEBUG(699, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1009 "Zend/zend_language_scanner.l" +#line 1012 "Zend/zend_language_scanner.l" { return T_INSTANCEOF; } -#line 6693 "Zend/zend_language_scanner.c" +#line 6700 "Zend/zend_language_scanner.c" yy700: YYDEBUG(700, *YYCURSOR); yych = *++YYCURSOR; @@ -6733,11 +6740,11 @@ yy707: } YYDEBUG(708, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1065 "Zend/zend_language_scanner.l" +#line 1068 "Zend/zend_language_scanner.l" { return T_IMPLEMENTS; } -#line 6741 "Zend/zend_language_scanner.c" +#line 6748 "Zend/zend_language_scanner.c" yy709: YYDEBUG(709, *YYCURSOR); yych = *++YYCURSOR; @@ -6757,11 +6764,11 @@ yy711: } YYDEBUG(712, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 945 "Zend/zend_language_scanner.l" +#line 948 "Zend/zend_language_scanner.l" { return T_TRY; } -#line 6765 "Zend/zend_language_scanner.c" +#line 6772 "Zend/zend_language_scanner.c" yy713: YYDEBUG(713, *YYCURSOR); yych = *++YYCURSOR; @@ -6780,11 +6787,11 @@ yy715: } YYDEBUG(716, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 953 "Zend/zend_language_scanner.l" +#line 956 "Zend/zend_language_scanner.l" { return T_THROW; } -#line 6788 "Zend/zend_language_scanner.c" +#line 6795 "Zend/zend_language_scanner.c" yy717: YYDEBUG(717, *YYCURSOR); yych = *++YYCURSOR; @@ -6845,11 +6852,11 @@ yy723: yy724: YYDEBUG(724, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1159 "Zend/zend_language_scanner.l" +#line 1162 "Zend/zend_language_scanner.l" { return T_REQUIRE; } -#line 6853 "Zend/zend_language_scanner.c" +#line 6860 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); yych = *++YYCURSOR; @@ -6878,11 +6885,11 @@ yy729: } YYDEBUG(730, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1163 "Zend/zend_language_scanner.l" +#line 1166 "Zend/zend_language_scanner.l" { return T_REQUIRE_ONCE; } -#line 6886 "Zend/zend_language_scanner.c" +#line 6893 "Zend/zend_language_scanner.c" yy731: YYDEBUG(731, *YYCURSOR); yych = *++YYCURSOR; @@ -6901,11 +6908,11 @@ yy733: } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 941 "Zend/zend_language_scanner.l" +#line 944 "Zend/zend_language_scanner.l" { return T_RETURN; } -#line 6909 "Zend/zend_language_scanner.c" +#line 6916 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6986,11 +6993,11 @@ yy744: } YYDEBUG(745, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1037 "Zend/zend_language_scanner.l" +#line 1040 "Zend/zend_language_scanner.l" { return T_CONTINUE; } -#line 6994 "Zend/zend_language_scanner.c" +#line 7001 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); ++YYCURSOR; @@ -6999,11 +7006,11 @@ yy746: } YYDEBUG(747, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 937 "Zend/zend_language_scanner.l" +#line 940 "Zend/zend_language_scanner.l" { return T_CONST; } -#line 7007 "Zend/zend_language_scanner.c" +#line 7014 "Zend/zend_language_scanner.c" yy748: YYDEBUG(748, *YYCURSOR); yych = *++YYCURSOR; @@ -7028,11 +7035,11 @@ yy751: } YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1107 "Zend/zend_language_scanner.l" +#line 1110 "Zend/zend_language_scanner.l" { return T_CLONE; } -#line 7036 "Zend/zend_language_scanner.c" +#line 7043 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7046,11 +7053,11 @@ yy754: } YYDEBUG(755, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1053 "Zend/zend_language_scanner.l" +#line 1056 "Zend/zend_language_scanner.l" { return T_CLASS; } -#line 7054 "Zend/zend_language_scanner.c" +#line 7061 "Zend/zend_language_scanner.c" yy756: YYDEBUG(756, *YYCURSOR); yych = *++YYCURSOR; @@ -7070,11 +7077,11 @@ yy758: } YYDEBUG(759, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1025 "Zend/zend_language_scanner.l" +#line 1028 "Zend/zend_language_scanner.l" { return T_CASE; } -#line 7078 "Zend/zend_language_scanner.c" +#line 7085 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *++YYCURSOR; @@ -7088,11 +7095,11 @@ yy761: } YYDEBUG(762, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 949 "Zend/zend_language_scanner.l" +#line 952 "Zend/zend_language_scanner.l" { return T_CATCH; } -#line 7096 "Zend/zend_language_scanner.c" +#line 7103 "Zend/zend_language_scanner.c" yy763: YYDEBUG(763, *YYCURSOR); yych = *++YYCURSOR; @@ -7143,11 +7150,11 @@ yy771: } YYDEBUG(772, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 933 "Zend/zend_language_scanner.l" +#line 936 "Zend/zend_language_scanner.l" { return T_FUNCTION; } -#line 7151 "Zend/zend_language_scanner.c" +#line 7158 "Zend/zend_language_scanner.c" yy773: YYDEBUG(773, *YYCURSOR); ++YYCURSOR; @@ -7171,11 +7178,11 @@ yy773: yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 985 "Zend/zend_language_scanner.l" +#line 988 "Zend/zend_language_scanner.l" { return T_FOR; } -#line 7179 "Zend/zend_language_scanner.c" +#line 7186 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); yych = *++YYCURSOR; @@ -7199,11 +7206,11 @@ yy778: } YYDEBUG(779, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 993 "Zend/zend_language_scanner.l" +#line 996 "Zend/zend_language_scanner.l" { return T_FOREACH; } -#line 7207 "Zend/zend_language_scanner.c" +#line 7214 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *++YYCURSOR; @@ -7222,11 +7229,11 @@ yy782: } YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1199 "Zend/zend_language_scanner.l" +#line 1202 "Zend/zend_language_scanner.l" { return T_FINAL; } -#line 7230 "Zend/zend_language_scanner.c" +#line 7237 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); yych = *++YYCURSOR; @@ -7257,11 +7264,11 @@ yy786: } YYDEBUG(787, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 981 "Zend/zend_language_scanner.l" +#line 984 "Zend/zend_language_scanner.l" { return T_DO; } -#line 7265 "Zend/zend_language_scanner.c" +#line 7272 "Zend/zend_language_scanner.c" yy788: YYDEBUG(788, *YYCURSOR); ++YYCURSOR; @@ -7270,11 +7277,11 @@ yy788: } YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 929 "Zend/zend_language_scanner.l" +#line 932 "Zend/zend_language_scanner.l" { return T_EXIT; } -#line 7278 "Zend/zend_language_scanner.c" +#line 7285 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7309,11 +7316,11 @@ yy795: } YYDEBUG(796, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1029 "Zend/zend_language_scanner.l" +#line 1032 "Zend/zend_language_scanner.l" { return T_DEFAULT; } -#line 7317 "Zend/zend_language_scanner.c" +#line 7324 "Zend/zend_language_scanner.c" yy797: YYDEBUG(797, *YYCURSOR); yych = *++YYCURSOR; @@ -7337,11 +7344,11 @@ yy800: } YYDEBUG(801, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1001 "Zend/zend_language_scanner.l" +#line 1004 "Zend/zend_language_scanner.l" { return T_DECLARE; } -#line 7345 "Zend/zend_language_scanner.c" +#line 7352 "Zend/zend_language_scanner.c" yy802: YYDEBUG(802, *YYCURSOR); yych = *++YYCURSOR; @@ -7421,11 +7428,11 @@ yy813: } YYDEBUG(814, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1061 "Zend/zend_language_scanner.l" +#line 1064 "Zend/zend_language_scanner.l" { return T_EXTENDS; } -#line 7429 "Zend/zend_language_scanner.c" +#line 7436 "Zend/zend_language_scanner.c" yy815: YYDEBUG(815, *YYCURSOR); ++YYCURSOR; @@ -7434,11 +7441,11 @@ yy815: } YYDEBUG(816, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 925 "Zend/zend_language_scanner.l" +#line 928 "Zend/zend_language_scanner.l" { return T_EXIT; } -#line 7442 "Zend/zend_language_scanner.c" +#line 7449 "Zend/zend_language_scanner.c" yy817: YYDEBUG(817, *YYCURSOR); yych = *++YYCURSOR; @@ -7452,11 +7459,11 @@ yy818: } YYDEBUG(819, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1147 "Zend/zend_language_scanner.l" +#line 1150 "Zend/zend_language_scanner.l" { return T_EVAL; } -#line 7460 "Zend/zend_language_scanner.c" +#line 7467 "Zend/zend_language_scanner.c" yy820: YYDEBUG(820, *YYCURSOR); yych = *++YYCURSOR; @@ -7526,11 +7533,11 @@ yy829: } YYDEBUG(830, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 977 "Zend/zend_language_scanner.l" +#line 980 "Zend/zend_language_scanner.l" { return T_ENDWHILE; } -#line 7534 "Zend/zend_language_scanner.c" +#line 7541 "Zend/zend_language_scanner.c" yy831: YYDEBUG(831, *YYCURSOR); yych = *++YYCURSOR; @@ -7559,11 +7566,11 @@ yy835: } YYDEBUG(836, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1021 "Zend/zend_language_scanner.l" +#line 1024 "Zend/zend_language_scanner.l" { return T_ENDSWITCH; } -#line 7567 "Zend/zend_language_scanner.c" +#line 7574 "Zend/zend_language_scanner.c" yy837: YYDEBUG(837, *YYCURSOR); ++YYCURSOR; @@ -7572,11 +7579,11 @@ yy837: } YYDEBUG(838, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 965 "Zend/zend_language_scanner.l" +#line 968 "Zend/zend_language_scanner.l" { return T_ENDIF; } -#line 7580 "Zend/zend_language_scanner.c" +#line 7587 "Zend/zend_language_scanner.c" yy839: YYDEBUG(839, *YYCURSOR); yych = *++YYCURSOR; @@ -7605,11 +7612,11 @@ yy840: yy841: YYDEBUG(841, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 989 "Zend/zend_language_scanner.l" +#line 992 "Zend/zend_language_scanner.l" { return T_ENDFOR; } -#line 7613 "Zend/zend_language_scanner.c" +#line 7620 "Zend/zend_language_scanner.c" yy842: YYDEBUG(842, *YYCURSOR); yych = *++YYCURSOR; @@ -7633,11 +7640,11 @@ yy845: } YYDEBUG(846, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 997 "Zend/zend_language_scanner.l" +#line 1000 "Zend/zend_language_scanner.l" { return T_ENDFOREACH; } -#line 7641 "Zend/zend_language_scanner.c" +#line 7648 "Zend/zend_language_scanner.c" yy847: YYDEBUG(847, *YYCURSOR); yych = *++YYCURSOR; @@ -7671,11 +7678,11 @@ yy852: } YYDEBUG(853, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1005 "Zend/zend_language_scanner.l" +#line 1008 "Zend/zend_language_scanner.l" { return T_ENDDECLARE; } -#line 7679 "Zend/zend_language_scanner.c" +#line 7686 "Zend/zend_language_scanner.c" yy854: YYDEBUG(854, *YYCURSOR); yych = *++YYCURSOR; @@ -7694,11 +7701,11 @@ yy856: } YYDEBUG(857, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1183 "Zend/zend_language_scanner.l" +#line 1186 "Zend/zend_language_scanner.l" { return T_EMPTY; } -#line 7702 "Zend/zend_language_scanner.c" +#line 7709 "Zend/zend_language_scanner.c" yy858: YYDEBUG(858, *YYCURSOR); yych = *++YYCURSOR; @@ -7727,11 +7734,11 @@ yy859: yy860: YYDEBUG(860, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 969 "Zend/zend_language_scanner.l" +#line 972 "Zend/zend_language_scanner.l" { return T_ELSE; } -#line 7735 "Zend/zend_language_scanner.c" +#line 7742 "Zend/zend_language_scanner.c" yy861: YYDEBUG(861, *YYCURSOR); yych = *++YYCURSOR; @@ -7745,11 +7752,11 @@ yy862: } YYDEBUG(863, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 961 "Zend/zend_language_scanner.l" +#line 964 "Zend/zend_language_scanner.l" { return T_ELSEIF; } -#line 7753 "Zend/zend_language_scanner.c" +#line 7760 "Zend/zend_language_scanner.c" yy864: YYDEBUG(864, *YYCURSOR); yych = *++YYCURSOR; @@ -7763,11 +7770,11 @@ yy865: } YYDEBUG(866, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1045 "Zend/zend_language_scanner.l" +#line 1048 "Zend/zend_language_scanner.l" { return T_ECHO; } -#line 7771 "Zend/zend_language_scanner.c" +#line 7778 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7840,7 +7847,7 @@ yy869: yy870: YYDEBUG(870, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1074 "Zend/zend_language_scanner.l" +#line 1077 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -7848,7 +7855,7 @@ yy870: HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 7852 "Zend/zend_language_scanner.c" +#line 7859 "Zend/zend_language_scanner.c" yy871: YYDEBUG(871, *YYCURSOR); ++YYCURSOR; @@ -7856,13 +7863,13 @@ yy871: yy872: YYDEBUG(872, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1093 "Zend/zend_language_scanner.l" +#line 1096 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); goto restart; } -#line 7866 "Zend/zend_language_scanner.c" +#line 7873 "Zend/zend_language_scanner.c" yy873: YYDEBUG(873, *YYCURSOR); ++YYCURSOR; @@ -7871,14 +7878,14 @@ yy873: yy874: YYDEBUG(874, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1086 "Zend/zend_language_scanner.l" +#line 1089 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 7882 "Zend/zend_language_scanner.c" +#line 7889 "Zend/zend_language_scanner.c" yy875: YYDEBUG(875, *YYCURSOR); yych = *++YYCURSOR; @@ -7899,11 +7906,11 @@ yy878: ++YYCURSOR; YYDEBUG(879, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1082 "Zend/zend_language_scanner.l" +#line 1085 "Zend/zend_language_scanner.l" { return T_OBJECT_OPERATOR; } -#line 7907 "Zend/zend_language_scanner.c" +#line 7914 "Zend/zend_language_scanner.c" yy880: YYDEBUG(880, *YYCURSOR); ++YYCURSOR; @@ -7973,7 +7980,7 @@ yy884: yy885: YYDEBUG(885, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1361 "Zend/zend_language_scanner.l" +#line 1364 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; @@ -7981,20 +7988,20 @@ yy885: yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } -#line 7985 "Zend/zend_language_scanner.c" +#line 7992 "Zend/zend_language_scanner.c" yy886: YYDEBUG(886, *YYCURSOR); ++YYCURSOR; YYDEBUG(887, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1370 "Zend/zend_language_scanner.l" +#line 1373 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 7998 "Zend/zend_language_scanner.c" +#line 8005 "Zend/zend_language_scanner.c" yy888: YYDEBUG(888, *YYCURSOR); ++YYCURSOR; @@ -8456,7 +8463,7 @@ yy925: ++YYCURSOR; YYDEBUG(926, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2106 "Zend/zend_language_scanner.l" +#line 2113 "Zend/zend_language_scanner.l" { char *end = yytext + yyleng - 1; @@ -8499,7 +8506,7 @@ yy925: yymore(); } } -#line 8503 "Zend/zend_language_scanner.c" +#line 8510 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_ONE_LINE_COMMENT: @@ -8556,11 +8563,11 @@ yy929: yy930: YYDEBUG(930, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1726 "Zend/zend_language_scanner.l" +#line 1731 "Zend/zend_language_scanner.l" { yymore(); } -#line 8564 "Zend/zend_language_scanner.c" +#line 8571 "Zend/zend_language_scanner.c" yy931: YYDEBUG(931, *YYCURSOR); yych = *++YYCURSOR; @@ -8583,7 +8590,7 @@ yy933: yy935: YYDEBUG(935, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1730 "Zend/zend_language_scanner.l" +#line 1735 "Zend/zend_language_scanner.l" { switch (yytext[yyleng-1]) { case '?': case '%': case '>': @@ -8601,7 +8608,7 @@ yy935: return T_COMMENT; } } -#line 8605 "Zend/zend_language_scanner.c" +#line 8612 "Zend/zend_language_scanner.c" yy936: YYDEBUG(936, *YYCURSOR); yych = *++YYCURSOR; @@ -8614,7 +8621,7 @@ yy937: ++YYCURSOR; YYDEBUG(939, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1748 "Zend/zend_language_scanner.l" +#line 1753 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -8623,7 +8630,7 @@ yy937: CG(zend_lineno)++; return T_COMMENT; } -#line 8627 "Zend/zend_language_scanner.c" +#line 8634 "Zend/zend_language_scanner.c" yy940: YYDEBUG(940, *YYCURSOR); yych = *++YYCURSOR; @@ -8633,9 +8640,9 @@ yy941: ++YYCURSOR; YYDEBUG(942, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1757 "Zend/zend_language_scanner.l" +#line 1762 "Zend/zend_language_scanner.l" { - if (CG(asp_tags) || yytext[yyleng-2] != '%') { /* asp comment? */ + if (CG(asp_tags) || yytext[yyleng-2] != '%') { /* asp comment? */ zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng-2; zendlval->type = IS_STRING; @@ -8646,7 +8653,7 @@ yy941: yymore(); } } -#line 8650 "Zend/zend_language_scanner.c" +#line 8657 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_START_HEREDOC: @@ -8703,13 +8710,13 @@ yy945: yy946: YYDEBUG(946, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1920 "Zend/zend_language_scanner.l" +#line 1927 "Zend/zend_language_scanner.l" { yyless(0); BEGIN(ST_HEREDOC); goto restart; } -#line 8713 "Zend/zend_language_scanner.c" +#line 8720 "Zend/zend_language_scanner.c" yy947: YYDEBUG(947, *YYCURSOR); yyaccept = 0; @@ -8754,7 +8761,7 @@ yy952: ++YYCURSOR; YYDEBUG(953, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1926 "Zend/zend_language_scanner.l" +#line 1933 "Zend/zend_language_scanner.l" { int label_len = yyleng - 1; @@ -8776,7 +8783,7 @@ yy952: yymore(); } } -#line 8780 "Zend/zend_language_scanner.c" +#line 8787 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_START_NOWDOC: @@ -8833,13 +8840,13 @@ yy956: yy957: YYDEBUG(957, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2080 "Zend/zend_language_scanner.l" +#line 2087 "Zend/zend_language_scanner.l" { yyless(0); BEGIN(ST_NOWDOC); goto restart; } -#line 8843 "Zend/zend_language_scanner.c" +#line 8850 "Zend/zend_language_scanner.c" yy958: YYDEBUG(958, *YYCURSOR); yyaccept = 0; @@ -8884,7 +8891,7 @@ yy963: ++YYCURSOR; YYDEBUG(964, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2086 "Zend/zend_language_scanner.l" +#line 2093 "Zend/zend_language_scanner.l" { int label_len = yyleng - 1; @@ -8904,7 +8911,7 @@ yy963: yymore(); } } -#line 8908 "Zend/zend_language_scanner.c" +#line 8915 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -9005,7 +9012,7 @@ yy967: yy968: YYDEBUG(968, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1420 "Zend/zend_language_scanner.l" +#line 1423 "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); @@ -9017,7 +9024,7 @@ yy968: } return T_NUM_STRING; } -#line 9021 "Zend/zend_language_scanner.c" +#line 9028 "Zend/zend_language_scanner.c" yy969: YYDEBUG(969, *YYCURSOR); yych = *++YYCURSOR; @@ -9037,23 +9044,23 @@ yy970: yy971: YYDEBUG(971, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1701 "Zend/zend_language_scanner.l" +#line 1706 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 9046 "Zend/zend_language_scanner.c" +#line 9053 "Zend/zend_language_scanner.c" yy972: YYDEBUG(972, *YYCURSOR); ++YYCURSOR; YYDEBUG(973, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1696 "Zend/zend_language_scanner.l" +#line 1701 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 9057 "Zend/zend_language_scanner.c" +#line 9064 "Zend/zend_language_scanner.c" yy974: YYDEBUG(974, *YYCURSOR); yych = *++YYCURSOR; @@ -9063,7 +9070,7 @@ yy975: ++YYCURSOR; YYDEBUG(976, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1706 "Zend/zend_language_scanner.l" +#line 1711 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -9071,7 +9078,7 @@ yy975: ZVAL_EMPTY_STRING(zendlval); /* Empty since it won't be used */ return T_ENCAPSED_AND_WHITESPACE; } -#line 9075 "Zend/zend_language_scanner.c" +#line 9082 "Zend/zend_language_scanner.c" yy977: YYDEBUG(977, *YYCURSOR); ++YYCURSOR; @@ -9080,24 +9087,24 @@ yy977: yy978: YYDEBUG(978, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1714 "Zend/zend_language_scanner.l" +#line 1719 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 9090 "Zend/zend_language_scanner.c" +#line 9097 "Zend/zend_language_scanner.c" yy979: YYDEBUG(979, *YYCURSOR); ++YYCURSOR; YYDEBUG(980, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2172 "Zend/zend_language_scanner.l" +#line 2179 "Zend/zend_language_scanner.l" { zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 9101 "Zend/zend_language_scanner.c" +#line 9108 "Zend/zend_language_scanner.c" yy981: YYDEBUG(981, *YYCURSOR); ++YYCURSOR; @@ -9133,13 +9140,13 @@ yy983: yy985: YYDEBUG(985, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1690 "Zend/zend_language_scanner.l" +#line 1695 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 9143 "Zend/zend_language_scanner.c" +#line 9150 "Zend/zend_language_scanner.c" yy986: YYDEBUG(986, *YYCURSOR); ++YYCURSOR; @@ -9171,14 +9178,14 @@ yy990: yy992: YYDEBUG(992, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1432 "Zend/zend_language_scanner.l" +#line 1435 "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; return T_NUM_STRING; } -#line 9182 "Zend/zend_language_scanner.c" +#line 9189 "Zend/zend_language_scanner.c" yy993: YYDEBUG(993, *YYCURSOR); ++YYCURSOR; @@ -9191,6 +9198,6 @@ yy993: goto yy992; } } -#line 2177 "Zend/zend_language_scanner.l" +#line 2184 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.h b/Zend/zend_language_scanner.h index 273f00d1ff..3419785179 100644 --- a/Zend/zend_language_scanner.h +++ b/Zend/zend_language_scanner.h @@ -38,12 +38,12 @@ typedef struct _zend_lex_state { #ifdef ZEND_MULTIBYTE /* original (unfiltered) script */ - char *script_org; - int script_org_size; + unsigned char *script_org; + size_t script_org_size; /* filtered script */ - char *script_filtered; - int script_filtered_size; + unsigned char *script_filtered; + size_t script_filtered_size; /* input/ouput filters */ zend_encoding_filter input_filter; diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 39f2c5b30c..76ccedb1d9 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -262,7 +262,7 @@ ZEND_API int open_file_for_scanning(zend_file_handle *file_handle TSRMLS_DC) if (size != -1) { #ifdef ZEND_MULTIBYTE - if (zend_multibyte_read_script(buf, size TSRMLS_CC) != 0) { + if (zend_multibyte_read_script((unsigned char *)buf, size TSRMLS_CC) != 0) { return FAILURE; } @@ -271,14 +271,14 @@ ZEND_API int open_file_for_scanning(zend_file_handle *file_handle TSRMLS_DC) zend_multibyte_set_filter(NULL TSRMLS_CC); if (!SCNG(input_filter)) { - SCNG(script_filtered) = (char*)emalloc(SCNG(script_org_size)+1); + SCNG(script_filtered) = (unsigned char*)emalloc(SCNG(script_org_size)+1); memcpy(SCNG(script_filtered), SCNG(script_org), SCNG(script_org_size)+1); SCNG(script_filtered_size) = SCNG(script_org_size); } else { SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC); } - yy_scan_buffer(SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC); + yy_scan_buffer((char *)SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC); #else /* !ZEND_MULTIBYTE */ yy_scan_buffer(buf, size TSRMLS_CC); #endif /* ZEND_MULTIBYTE */ @@ -419,20 +419,20 @@ ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename TSRMLS_D SCNG(yy_in)=NULL; #ifdef ZEND_MULTIBYTE - SCNG(script_org) = estrdup(str->value.str.val); + SCNG(script_org) = (unsigned char *)estrdup(str->value.str.val); SCNG(script_org_size) = str->value.str.len; zend_multibyte_set_filter(CG(internal_encoding) TSRMLS_CC); if (!SCNG(input_filter)) { - SCNG(script_filtered) = (char*)emalloc(SCNG(script_org_size)+1); + SCNG(script_filtered) = (unsigned char*)emalloc(SCNG(script_org_size)+1); memcpy(SCNG(script_filtered), SCNG(script_org), SCNG(script_org_size)+1); SCNG(script_filtered_size) = SCNG(script_org_size); } else { SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC); } - yy_scan_buffer(SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC); + yy_scan_buffer((char *)SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC); #else /* !ZEND_MULTIBYTE */ yy_scan_buffer(str->value.str.val, str->value.str.len TSRMLS_CC); #endif /* ZEND_MULTIBYTE */ @@ -581,10 +581,9 @@ END_EXTERN_C() BEGIN_EXTERN_C() ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter, zend_encoding *old_encoding TSRMLS_DC) { - int offset, original_offset, length, free_flag, new_len; - char *p; + size_t offset, original_offset, length, free_flag, new_len; + unsigned char *p; zend_encoding *new_encoding; - unsigned char *yy_c_buf_p; /* calculate current position */ offset = original_offset = YYCURSOR - SCNG(yy_start); @@ -609,25 +608,28 @@ ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter /* convert and set */ if (!SCNG(input_filter)) { - length = SCNG(script_org_size)-offset-1; - p = SCNG(script_org)+offset+1; + length = SCNG(script_org_size) - offset - 1; + p = SCNG(script_org) + offset + 1; free_flag = 0; } else { - SCNG(input_filter)(&p, &length, SCNG(script_org)+offset+1, SCNG(script_org_size)-offset-1 TSRMLS_CC); + SCNG(input_filter)(&p, &length, SCNG(script_org) + offset, SCNG(script_org_size) - offset TSRMLS_CC); free_flag = 1; } - new_len = original_offset+length+1; + new_len = original_offset + length; - if (new_len > YYLIMIT-SCNG(yy_start)) { - YYLIMIT = SCNG(yy_start) + new_len; - SCNG(yy_start) = erealloc(SCNG(yy_start), new_len); - SCNG(script_filtered) = SCNG(yy_start); + if (new_len > YYLIMIT - SCNG(yy_start)) { + unsigned char *new_yy_start = erealloc(SCNG(yy_start), new_len); + SCNG(yy_cursor) = new_yy_start + (SCNG(yy_cursor) - SCNG(yy_start)); + SCNG(yy_marker) = new_yy_start + (SCNG(yy_marker) - SCNG(yy_start)); + SCNG(yy_text) = new_yy_start + (SCNG(yy_text) - SCNG(yy_start)); + SCNG(yy_start) = new_yy_start; + SCNG(script_filtered) = new_yy_start; SCNG(script_filtered_size) = new_len; } - yy_c_buf_p = SCNG(yy_start) + original_offset; - strncpy(yy_c_buf_p+1, p, length); + SCNG(yy_limit) = SCNG(yy_start) + new_len; + memmove(SCNG(yy_start) + original_offset, p, length); if (free_flag) { efree(p); @@ -637,7 +639,7 @@ ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, size_t len TSRMLS_DC) { - int c = '*', n; + size_t n; if (CG(interactive) == 0) { if (zend_stream_fixup(file_handle, &buf, &len TSRMLS_CC) == FAILURE) { @@ -664,26 +666,23 @@ ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, si n = len; SCNG(script_org_size) = n; - SCNG(script_org) = (char*)emalloc(SCNG(script_org_size) + 1); + SCNG(script_org) = (unsigned char*)emalloc(SCNG(script_org_size) + 1); memcpy(SCNG(script_org), buf, n); return n; } -ZEND_API int zend_multibyte_read_script(char *buf, int n TSRMLS_DC) +ZEND_API int zend_multibyte_read_script(unsigned char *buf, size_t n TSRMLS_DC) { if (SCNG(script_org)) { efree(SCNG(script_org)); } - if (n<0) { - return -1; - } SCNG(script_org_size) = n; - SCNG(script_org) = (char*)erealloc(SCNG(script_org), SCNG(script_org_size)); + SCNG(script_org) = (unsigned char*)erealloc(SCNG(script_org), SCNG(script_org_size)); memcpy(SCNG(script_org) + SCNG(script_org_size) - n, buf, n); - SCNG(script_org) = (char*)erealloc(SCNG(script_org), SCNG(script_org_size) + 1); + SCNG(script_org) = (unsigned char*)erealloc(SCNG(script_org), SCNG(script_org_size) + 1); *(SCNG(script_org)+SCNG(script_org_size)) = '\0'; return 0; @@ -692,7 +691,9 @@ ZEND_API int zend_multibyte_read_script(char *buf, int n TSRMLS_DC) # define zend_copy_value(zendlval, yytext, yyleng) \ if (SCNG(output_filter)) { \ - SCNG(output_filter)(&(zendlval->value.str.val), &(zendlval->value.str.len), yytext, yyleng TSRMLS_CC); \ + 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; \ } else { \ zendlval->value.str.val = (char *) estrndup(yytext, yyleng); \ zendlval->value.str.len = yyleng; \ @@ -807,8 +808,10 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo *t = 0; #ifdef ZEND_MULTIBYTE if (SCNG(output_filter)) { + size_t sz = 0; s = zendlval->value.str.val; - SCNG(output_filter)(&(zendlval->value.str.val), &(zendlval->value.str.len), s, zendlval->value.str.len TSRMLS_CC); + 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; efree(s); } #endif /* ZEND_MULTIBYTE */ @@ -1648,7 +1651,9 @@ inline_char_handler: #ifdef ZEND_MULTIBYTE if (SCNG(output_filter)) { int readsize; - readsize = SCNG(output_filter)(&(zendlval->value.str.val), &(zendlval->value.str.len), yytext, yyleng TSRMLS_CC); + 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; if (readsize < yyleng) { yyless(readsize); } @@ -1755,7 +1760,7 @@ inline_char_handler: } "?>"|"%>" { - if (CG(asp_tags) || yytext[yyleng-2] != '%') { /* asp comment? */ + if (CG(asp_tags) || yytext[yyleng-2] != '%') { /* asp comment? */ zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng-2; zendlval->type = IS_STRING; @@ -1874,8 +1879,10 @@ inline_char_handler: #ifdef ZEND_MULTIBYTE if (SCNG(output_filter)) { + size_t sz = 0; s = zendlval->value.str.val; - SCNG(output_filter)(&(zendlval->value.str.val), &(zendlval->value.str.len), s, zendlval->value.str.len TSRMLS_CC); + 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; efree(s); } #endif /* ZEND_MULTIBYTE */ @@ -1992,7 +1999,7 @@ inline_char_handler: } {ANY_CHAR} { - SCNG(yy_text) = Z_STRVAL_P(zendlval) = CG(heredoc); + SCNG(yy_text) = (unsigned char *)(Z_STRVAL_P(zendlval) = CG(heredoc)); SCNG(yy_leng) = Z_STRLEN_P(zendlval) = CG(heredoc_len); CG(heredoc) = NULL; CG(heredoc_len) = 0; @@ -2147,7 +2154,7 @@ inline_char_handler: } {ANY_CHAR} { - SCNG(yy_text) = Z_STRVAL_P(zendlval) = CG(heredoc); + SCNG(yy_text) = (unsigned char*)(Z_STRVAL_P(zendlval) = CG(heredoc)); SCNG(yy_leng) = Z_STRLEN_P(zendlval) = CG(heredoc_len); CG(heredoc) = NULL; CG(heredoc_len) = 0; diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 1ff758e680..fbd9f33cab 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.6.dev on Tue Jul 8 16:16:41 2008 */ +/* Generated by re2c 0.13.5 on Fri Jul 25 07:14:28 2008 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { diff --git a/Zend/zend_multibyte.c b/Zend/zend_multibyte.c index 6f4e86b65a..9f47298f64 100644 --- a/Zend/zend_multibyte.c +++ b/Zend/zend_multibyte.c @@ -25,14 +25,15 @@ #include "zend_multibyte.h" #ifdef ZEND_MULTIBYTE -static int zend_multibyte_encoding_filter(char **to, int *to_length, const char *to_encoding, const char *from, int from_length, const char *from_encoding TSRMLS_DC); -int sjis_input_filter(char **buf, int *length, const char *sjis, int sjis_length TSRMLS_DC); -int sjis_output_filter(char **buf, int *length, const char *sjis, int sjis_length TSRMLS_DC); -static char* zend_multibyte_assemble_encoding_list(zend_encoding **encoding_list, int encoding_list_size); -static int zend_multibyte_parse_encoding_list(const char *encoding_list, int encoding_list_size, zend_encoding ***result, int *result_size); -static zend_encoding* zend_multibyte_find_script_encoding(zend_encoding *onetime_encoding TSRMLS_DC); -static zend_encoding* zend_multibyte_detect_unicode(TSRMLS_D); -static zend_encoding* zend_multibyte_detect_utf_encoding(char *script, int script_size TSRMLS_DC); +static size_t zend_multibyte_encoding_filter(unsigned char **to, size_t *to_length, const char *to_encoding, const unsigned char *from, size_t from_length, const char *from_encoding TSRMLS_DC); +size_t sjis_input_filter(unsigned char **buf, size_t *length, const unsigned char *sjis, size_t sjis_length TSRMLS_DC); +size_t sjis_output_filter(unsigned char **buf, size_t *length, const unsigned char *sjis, size_t sjis_length TSRMLS_DC); +static char* zend_multibyte_assemble_encoding_list(zend_encoding **encoding_list, size_t encoding_list_size); +static int zend_multibyte_parse_encoding_list(const char *encoding_list, +size_t encoding_list_size, zend_encoding ***result, size_t *result_size); +static zend_encoding *zend_multibyte_find_script_encoding(zend_encoding *onetime_encoding TSRMLS_DC); +static zend_encoding *zend_multibyte_detect_unicode(TSRMLS_D); +static zend_encoding *zend_multibyte_detect_utf_encoding(const unsigned char *script, size_t script_size TSRMLS_DC); /* * encodings @@ -475,7 +476,8 @@ zend_encoding *zend_encoding_table[] = { -ZEND_API int zend_multibyte_set_script_encoding(char *encoding_list, int encoding_list_size TSRMLS_DC) +ZEND_API int zend_multibyte_set_script_encoding(const char *encoding_list, +size_t encoding_list_size TSRMLS_DC) { if (CG(script_encoding_list)) { efree(CG(script_encoding_list)); @@ -493,7 +495,7 @@ ZEND_API int zend_multibyte_set_script_encoding(char *encoding_list, int encodin } -ZEND_API int zend_multibyte_set_internal_encoding(char *encoding_name, int encoding_name_size TSRMLS_DC) +ZEND_API int zend_multibyte_set_internal_encoding(const char *encoding_name TSRMLS_DC) { CG(internal_encoding) = zend_multibyte_fetch_encoding(encoding_name); return 0; @@ -558,7 +560,7 @@ ZEND_API int zend_multibyte_set_filter(zend_encoding *onetime_encoding TSRMLS_DC } -ZEND_API zend_encoding* zend_multibyte_fetch_encoding(char *encoding_name) +ZEND_API zend_encoding* zend_multibyte_fetch_encoding(const char *encoding_name) { int i, j; zend_encoding *encoding; @@ -568,7 +570,7 @@ ZEND_API zend_encoding* zend_multibyte_fetch_encoding(char *encoding_name) } for (i = 0; (encoding = zend_encoding_table[i]) != NULL; i++) { - if (zend_binary_strcasecmp((char*)encoding->name, strlen(encoding->name), encoding_name, strlen(encoding_name)) == 0) { + if (zend_binary_strcasecmp(encoding->name, strlen(encoding->name), encoding_name, strlen(encoding_name)) == 0) { return encoding; } } @@ -576,7 +578,7 @@ ZEND_API zend_encoding* zend_multibyte_fetch_encoding(char *encoding_name) for (i = 0; (encoding = zend_encoding_table[i]) != NULL; i++) { if (encoding->aliases != NULL) { for (j = 0; (*encoding->aliases)[j] != NULL; j++) { - if (zend_binary_strcasecmp((char*)(*encoding->aliases)[j], strlen((*encoding->aliases)[j]), encoding_name, strlen(encoding_name)) == 0) { + if (zend_binary_strcasecmp((*encoding->aliases)[j], strlen((*encoding->aliases)[j]), encoding_name, strlen(encoding_name)) == 0) { return encoding; } } @@ -587,7 +589,8 @@ ZEND_API zend_encoding* zend_multibyte_fetch_encoding(char *encoding_name) } -ZEND_API int zend_multibyte_script_encoding_filter(char **to, int *to_length, const char *from, int from_length TSRMLS_DC) +ZEND_API size_t zend_multibyte_script_encoding_filter(unsigned char **to, size_t +*to_length, const unsigned char *from, size_t from_length TSRMLS_DC) { const char *name; @@ -600,7 +603,7 @@ ZEND_API int zend_multibyte_script_encoding_filter(char **to, int *to_length, co return zend_multibyte_encoding_filter(to, to_length, name, from, from_length, LANG_SCNG(script_encoding)->name TSRMLS_CC); } -ZEND_API int zend_multibyte_internal_encoding_filter(char **to, int *to_length, const char *from, int from_length TSRMLS_DC) +ZEND_API size_t zend_multibyte_internal_encoding_filter(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length TSRMLS_DC) { const char *name; @@ -613,9 +616,9 @@ ZEND_API int zend_multibyte_internal_encoding_filter(char **to, int *to_length, return zend_multibyte_encoding_filter(to, to_length, LANG_SCNG(internal_encoding)->name, from, from_length, name TSRMLS_CC); } -static int zend_multibyte_encoding_filter(char **to, int *to_length, const char *to_encoding, const char *from, int from_length, const char *from_encoding TSRMLS_DC) +static size_t zend_multibyte_encoding_filter(unsigned char **to, size_t *to_length, const char *to_encoding, const unsigned char *from, size_t from_length, const char *from_encoding TSRMLS_DC) { - int oddlen; + size_t oddlen; if (!CG(encoding_converter)) { return 0; @@ -658,21 +661,22 @@ static const unsigned char table_sjis[] = { /* 0x80-0x9f,0xE0-0xEF */ 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 0, 0, 0 }; -int sjis_input_filter(char **buf, int *length, const char *sjis, int sjis_length TSRMLS_DC) +size_t sjis_input_filter(unsigned char **buf, size_t *length, const unsigned char *sjis, size_t sjis_length TSRMLS_DC) { - unsigned char *p, *q; + const unsigned char *p; + unsigned char *q; unsigned char c1, c2; - *buf = (char*)emalloc(sjis_length*3/2+1); + *buf = (unsigned char*)emalloc(sjis_length * 3 / 2 + 1); if (!*buf) return 0; *length = 0; - p = (unsigned char*)sjis; - q = (unsigned char*)*buf; + p = sjis; + q = *buf; /* convert [SJIS -> EUC-JP] (for lex scan) -- some other better ways? */ - while (*p && (p-(unsigned char*)sjis) < sjis_length) { + while (*p && (p - sjis) < sjis_length) { if (!(*p & 0x80)) { *q++ = *p++; continue; @@ -694,7 +698,7 @@ int sjis_input_filter(char **buf, int *length, const char *sjis, int sjis_length if (table_sjis[*p] == 2) { /* 2 byte kanji code */ c1 = *p++; - if (!*p || (p-(unsigned char*)sjis) >= sjis_length) { + if (!*p || (p - sjis) >= sjis_length) { break; } c2 = *p++; @@ -725,11 +729,11 @@ int sjis_input_filter(char **buf, int *length, const char *sjis, int sjis_length * so, these code are for perfect RESTORING in sjis_output_filter() */ c1 = *p++; - if (!*p || (p-(unsigned char*)sjis) >= sjis_length) { + if (!*p || (p - sjis) >= sjis_length) { break; } c2 = *p++; - *q++ = (char)0x8f; + *q++ = 0x8f; /* * MAP TO (EUC-JP): * type A: 0xeba1 - 0xf4fe @@ -754,8 +758,8 @@ int sjis_input_filter(char **buf, int *length, const char *sjis, int sjis_length *q++ = c2; } } - *q = (char)NULL; - *length = (char*)q - *buf; + *q = '\0'; + *length = q - *buf; return *length; } @@ -779,18 +783,18 @@ static const unsigned char table_eucjp[] = { /* 0xA1-0xFE */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; -int sjis_output_filter(char **sjis, int *sjis_length, const char *buf, int length TSRMLS_DC) +size_t sjis_output_filter(unsigned char **sjis, size_t *sjis_length, const unsigned char *buf, size_t length TSRMLS_DC) { unsigned char c1, c2; - char *p; - const char *q; + unsigned char *p; + const unsigned char *q; if (!sjis || !sjis_length) { return 0; } /* always Shift_JIS <= EUC-JP */ - *sjis = (char*)emalloc(length+1); + *sjis = (unsigned char*)emalloc(length+1); if (!sjis) { return 0; } @@ -798,14 +802,14 @@ int sjis_output_filter(char **sjis, int *sjis_length, const char *buf, int lengt q = buf; /* restore converted strings [EUC-JP -> Shift_JIS] */ - while (*q) { + while (*q && (q - buf) < length) { if (!(*q & 0x80)) { *p++ = *q++; continue; } /* hankaku kana */ - if (*q == (char)0x8e) { + if (*q == 0x8e) { q++; if (*q) { *p++ = *q++; @@ -814,7 +818,7 @@ int sjis_output_filter(char **sjis, int *sjis_length, const char *buf, int lengt } /* 2 byte kanji code */ - if (table_eucjp[(unsigned char)*q] == 2) { + if (table_eucjp[*q] == 2) { c1 = (*q++ & ~0x80) & 0xff; if (*q) { c2 = (*q++ & ~0x80) & 0xff; @@ -837,7 +841,7 @@ int sjis_output_filter(char **sjis, int *sjis_length, const char *buf, int lengt continue; } - if (*q == (char)0x8f) { + if (*q == 0x8f) { q++; if (*q) { c1 = (*q++ & ~0x80) & 0xff; @@ -882,7 +886,7 @@ int sjis_output_filter(char **sjis, int *sjis_length, const char *buf, int lengt } -static char* zend_multibyte_assemble_encoding_list(zend_encoding **encoding_list, int encoding_list_size) +static char *zend_multibyte_assemble_encoding_list(zend_encoding **encoding_list, size_t encoding_list_size) { int i, list_size = 0; const char *name; @@ -901,7 +905,7 @@ static char* zend_multibyte_assemble_encoding_list(zend_encoding **encoding_list if (!list) { return NULL; } - *list = (char)NULL; + *list = '\0'; } else { list = (char*)erealloc(list, list_size); if (!list) { @@ -916,7 +920,8 @@ static char* zend_multibyte_assemble_encoding_list(zend_encoding **encoding_list } -static int zend_multibyte_parse_encoding_list(const char *encoding_list, int encoding_list_size, zend_encoding ***result, int *result_size) +static int zend_multibyte_parse_encoding_list(const char *encoding_list, +size_t encoding_list_size, zend_encoding ***result, size_t *result_size) { int n, size; char *p, *p1, *p2, *endp, *tmpstr; @@ -1034,7 +1039,7 @@ static zend_encoding* zend_multibyte_detect_unicode(TSRMLS_D) { zend_encoding *script_encoding = NULL; int bom_size; - char *script; + unsigned char *script; if (LANG_SCNG(script_org_size) < sizeof(BOM_UTF32_LE)-1) { return NULL; @@ -1060,7 +1065,7 @@ static zend_encoding* zend_multibyte_detect_unicode(TSRMLS_D) if (script_encoding) { /* remove BOM */ - script = (char*)emalloc(LANG_SCNG(script_org_size)+1-bom_size); + script = (unsigned char*)emalloc(LANG_SCNG(script_org_size)+1-bom_size); memcpy(script, LANG_SCNG(script_org)+bom_size, LANG_SCNG(script_org_size)+1-bom_size); efree(LANG_SCNG(script_org)); LANG_SCNG(script_org) = script; @@ -1078,9 +1083,9 @@ static zend_encoding* zend_multibyte_detect_unicode(TSRMLS_D) return NULL; } -static zend_encoding* zend_multibyte_detect_utf_encoding(char *script, int script_size TSRMLS_DC) +static zend_encoding *zend_multibyte_detect_utf_encoding(const unsigned char *script, size_t script_size TSRMLS_DC) { - char *p; + const unsigned char *p; int wchar_size = 2; int le = 0; @@ -1091,7 +1096,7 @@ static zend_encoding* zend_multibyte_detect_utf_encoding(char *script, int scrip if (!p) { break; } - if (*(p+1) == (char)NULL && *(p+2) == (char)NULL) { + if (*(p+1) == '\0' && *(p+2) == '\0') { wchar_size = 4; break; } @@ -1103,11 +1108,11 @@ static zend_encoding* zend_multibyte_detect_utf_encoding(char *script, int scrip /* BE or LE? */ p = script; while ((p-script) < script_size) { - if (*p == (char)NULL && *(p+wchar_size-1) != (char)NULL) { + if (*p == '\0' && *(p+wchar_size-1) != '\0') { /* BE */ le = 0; break; - } else if (*p != (char)NULL && *(p+wchar_size-1) == (char)NULL) { + } else if (*p != '\0' && *(p+wchar_size-1) == '\0') { /* LE* */ le = 1; break; diff --git a/Zend/zend_multibyte.h b/Zend/zend_multibyte.h index 874cbe6f06..1214da1e87 100644 --- a/Zend/zend_multibyte.h +++ b/Zend/zend_multibyte.h @@ -30,20 +30,20 @@ #define BOM_UTF16_LE "\xff\xfe" #define BOM_UTF8 "\xef\xbb\xbf" -typedef int (*zend_encoding_filter)(char **str, int *str_length, const char *buf, int length TSRMLS_DC); +typedef size_t (*zend_encoding_filter)(unsigned char **str, size_t *str_length, const unsigned char *buf, size_t length TSRMLS_DC); -typedef char* (*zend_encoding_detector)(const char *string, int length, char *list TSRMLS_DC); +typedef char* (*zend_encoding_detector)(const unsigned char *string, size_t length, char *list TSRMLS_DC); -typedef int (*zend_encoding_converter)(char **to, int *to_length, const char *from, int from_length, const char *encoding_to, const char *encoding_from TSRMLS_DC); +typedef int (*zend_encoding_converter)(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length, const char *encoding_to, const char *encoding_from TSRMLS_DC); -typedef int (*zend_encoding_oddlen)(const char *string, int length, const char *encoding TSRMLS_DC); +typedef size_t (*zend_encoding_oddlen)(const unsigned char *string, size_t length, const char *encoding TSRMLS_DC); typedef struct _zend_encoding { zend_encoding_filter input_filter; /* escape input filter */ zend_encoding_filter output_filter; /* escape output filter */ const char *name; /* encoding name */ const char *(*aliases)[]; /* encoding name aliases */ - int compatible; /* flex compatible or not */ + zend_bool compatible; /* flex compatible or not */ } zend_encoding; @@ -51,18 +51,20 @@ typedef struct _zend_encoding { * zend multibyte APIs */ BEGIN_EXTERN_C() -ZEND_API int zend_multibyte_set_script_encoding(char *encoding_list, int encoding_list_size TSRMLS_DC); -ZEND_API int zend_multibyte_set_internal_encoding(char *encoding_name, int encoding_name_size TSRMLS_DC); +ZEND_API int zend_multibyte_set_script_encoding(const char *encoding_list, +size_t encoding_list_size TSRMLS_DC); +ZEND_API int zend_multibyte_set_internal_encoding(const char *encoding_name TSRMLS_DC); ZEND_API int zend_multibyte_set_functions(zend_encoding_detector encoding_detector, zend_encoding_converter encoding_converter, zend_encoding_oddlen encoding_oddlen TSRMLS_DC); ZEND_API int zend_multibyte_set_filter(zend_encoding *onetime_encoding TSRMLS_DC); -ZEND_API zend_encoding* zend_multibyte_fetch_encoding(char *encoding_name); -ZEND_API int zend_multibyte_script_encoding_filter(char **to, int *to_length, const char *from, int from_length TSRMLS_DC); -ZEND_API int zend_multibyte_internal_encoding_filter(char **to, int *to_length, const char *from, int from_length TSRMLS_DC); +ZEND_API zend_encoding* zend_multibyte_fetch_encoding(const char *encoding_name); +ZEND_API size_t zend_multibyte_script_encoding_filter(unsigned char **to, size_t +*to_length, const unsigned char *from, size_t from_length TSRMLS_DC); +ZEND_API size_t zend_multibyte_internal_encoding_filter(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length TSRMLS_DC); /* in zend_language_scanner.l */ ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter, zend_encoding *old_encoding TSRMLS_DC); ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, size_t len TSRMLS_DC); -ZEND_API int zend_multibyte_read_script(char *buf, int n TSRMLS_DC); +ZEND_API int zend_multibyte_read_script(unsigned char *buf, size_t n TSRMLS_DC); END_EXTERN_C() #endif /* ZEND_MULTIBYTE */ diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 3389f41706..5b35c8cea9 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -981,6 +981,169 @@ void _php_mb_free_regex(void *opaque) /* }}} */ #endif +#ifdef ZEND_MULTIBYTE +/* {{{ char *php_mb_encoding_detector() + * Interface for Zend Engine + */ +static char* php_mb_encoding_detector(const unsigned char *arg_string, size_t arg_length, char *arg_list TSRMLS_DC) +{ + mbfl_string string; + const char *ret; + enum mbfl_no_encoding *elist; + int size, *list; + + /* make encoding list */ + list = NULL; + size = 0; + php_mb_parse_encoding_list(arg_list, strlen(arg_list), &list, &size, 0 TSRMLS_CC); + if (size <= 0) { + return NULL; + } + if (size > 0 && list != NULL) { + elist = list; + } else { + elist = MBSTRG(current_detect_order_list); + size = MBSTRG(current_detect_order_list_size); + } + + mbfl_string_init(&string); + string.no_language = MBSTRG(current_language); + string.val = (unsigned char *)arg_string; + string.len = arg_length; + ret = mbfl_identify_encoding_name(&string, elist, size, 0); + if (list != NULL) { + efree((void *)list); + } + if (ret != NULL) { + return estrdup(ret); + } else { + return NULL; + } +} +/* }}} */ + +/* {{{ int php_mb_encoding_converter() */ +static int php_mb_encoding_converter(unsigned char **to, size_t *to_length, + const unsigned char *from, size_t from_length, + const char *encoding_to, const char *encoding_from TSRMLS_DC) +{ + mbfl_string string, result, *ret; + enum mbfl_no_encoding from_encoding, to_encoding; + mbfl_buffer_converter *convd; + + /* new encoding */ + to_encoding = mbfl_name2no_encoding(encoding_to); + if (to_encoding == mbfl_no_encoding_invalid) { + return -1; + } + /* old encoding */ + from_encoding = mbfl_name2no_encoding(encoding_from); + if (from_encoding == mbfl_no_encoding_invalid) { + return -1; + } + /* initialize string */ + mbfl_string_init(&string); + mbfl_string_init(&result); + string.no_encoding = from_encoding; + string.no_language = MBSTRG(current_language); + string.val = (unsigned char*)from; + string.len = from_length; + + /* initialize converter */ + convd = mbfl_buffer_converter_new(from_encoding, to_encoding, string.len); + if (convd == NULL) { + return -1; + } + mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode)); + mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar)); + + /* do it */ + ret = mbfl_buffer_converter_feed_result(convd, &string, &result); + if (ret != NULL) { + *to = ret->val; + *to_length = ret->len; + } + + MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd); + mbfl_buffer_converter_delete(convd); + + return ret ? 0 : -1; +} +/* }}} */ + +/* {{{ int php_mb_oddlen() + * returns number of odd (e.g. appears only first byte of multibyte + * character) chars + */ +static size_t php_mb_oddlen(const unsigned char *string, size_t length, const char *encoding TSRMLS_DC) +{ + mbfl_string mb_string; + + mbfl_string_init(&mb_string); + mb_string.no_language = MBSTRG(current_language); + mb_string.no_encoding = mbfl_name2no_encoding(encoding); + mb_string.val = (unsigned char *)string; + mb_string.len = length; + + if (mb_string.no_encoding == mbfl_no_encoding_invalid) { + return 0; + } + return mbfl_oddlen(&mb_string); +} +/* }}} */ + +/* {{{ php_mb_set_zend_encoding() */ +static int php_mb_set_zend_encoding(TSRMLS_D) +{ + /* 'd better use mbfl_memory_device? */ + char *name, *list = NULL; + int n, *entry, list_size = 0; + zend_encoding_detector encoding_detector; + zend_encoding_converter encoding_converter; + zend_encoding_oddlen encoding_oddlen; + + /* notify script encoding to Zend Engine */ + entry = MBSTRG(script_encoding_list); + n = MBSTRG(script_encoding_list_size); + while (n > 0) { + name = (char *)mbfl_no_encoding2name(*entry); + if (name) { + list_size += strlen(name) + 1; + if (!list) { + list = (char*)emalloc(list_size); + *list = (char)NULL; + } else { + list = (char*)erealloc(list, list_size); + strcat(list, ","); + } + strcat(list, name); + } + entry++; + n--; + } + zend_multibyte_set_script_encoding(list, (list ? strlen(list) : 0) TSRMLS_CC); + if (list) { + efree(list); + } + encoding_detector = php_mb_encoding_detector; + encoding_converter = php_mb_encoding_converter; + encoding_oddlen = php_mb_oddlen; + + /* TODO: make independent from mbstring.encoding_translation? */ + if (MBSTRG(encoding_translation)) { + /* notify internal encoding to Zend Engine */ + name = (char*)mbfl_no_encoding2name(MBSTRG(current_internal_encoding)); + zend_multibyte_set_internal_encoding(name TSRMLS_CC); + } + + zend_multibyte_set_functions(encoding_detector, encoding_converter, encoding_oddlen TSRMLS_CC); + + return 0; +} +/* }}} */ +#endif /* ZEND_MULTIBYTE */ + + /* {{{ php_mb_nls_get_default_detect_order_list */ static int php_mb_nls_get_default_detect_order_list(enum mbfl_no_language lang, enum mbfl_no_encoding **plist, int* plist_size) { @@ -1098,9 +1261,6 @@ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) php_mb_regex_set_mbctype(new_value TSRMLS_CC); } #endif -#ifdef ZEND_MULTIBYTE - zend_multibyte_set_internal_encoding(new_value, new_value_length TSRMLS_CC); -#endif /* ZEND_MULTIBYTE */ } else { if (new_value != NULL && new_value_length > 0) { return FAILURE; @@ -1464,6 +1624,7 @@ PHP_RINIT_FUNCTION(mbstring) PHP_RINIT(mb_regex) (INIT_FUNC_ARGS_PASSTHRU); #endif #ifdef ZEND_MULTIBYTE + zend_multibyte_set_internal_encoding(mbfl_no_encoding2name(MBSTRG(internal_encoding)) TSRMLS_CC); php_mb_set_zend_encoding(TSRMLS_C); #endif /* ZEND_MULTIBYTE */ @@ -1594,7 +1755,7 @@ PHP_FUNCTION(mb_internal_encoding) #ifdef ZEND_MULTIBYTE /* TODO: make independent from mbstring.encoding_translation? */ if (MBSTRG(encoding_translation)) { - zend_multibyte_set_internal_encoding(name, name_len TSRMLS_CC); + zend_multibyte_set_internal_encoding(name TSRMLS_CC); } #endif /* ZEND_MULTIBYTE */ RETURN_TRUE; @@ -4609,8 +4770,7 @@ MBSTRING_API size_t php_mb_gpc_mbchar_bytes(const char *s TSRMLS_DC) /* }}} */ /* {{{ MBSTRING_API int php_mb_gpc_encoding_converter() */ -MBSTRING_API int php_mb_gpc_encoding_converter(char **str, int *len, int num, const char *encoding_to, const char *encoding_from - TSRMLS_DC) +MBSTRING_API int php_mb_gpc_encoding_converter(char **str, int *len, int num, const char *encoding_to, const char *encoding_from TSRMLS_DC) { int i; mbfl_string string, result, *ret = NULL; @@ -4817,168 +4977,6 @@ MBSTRING_API int php_mb_stripos(int mode, const char *old_haystack, unsigned int } /* }}} */ -#ifdef ZEND_MULTIBYTE -/* {{{ MBSTRING_API int php_mb_set_zend_encoding() */ -MBSTRING_API int php_mb_set_zend_encoding(TSRMLS_D) -{ - /* 'd better use mbfl_memory_device? */ - char *name, *list = NULL; - int n, *entry, list_size = 0; - zend_encoding_detector encoding_detector; - zend_encoding_converter encoding_converter; - zend_encoding_oddlen encoding_oddlen; - - /* notify script encoding to Zend Engine */ - entry = MBSTRG(script_encoding_list); - n = MBSTRG(script_encoding_list_size); - while (n > 0) { - name = (char *)mbfl_no_encoding2name(*entry); - if (name) { - list_size += strlen(name) + 1; - if (!list) { - list = (char*)emalloc(list_size); - *list = (char)NULL; - } else { - list = (char*)erealloc(list, list_size); - strcat(list, ","); - } - strcat(list, name); - } - entry++; - n--; - } - zend_multibyte_set_script_encoding(list, (list ? strlen(list) : 0) TSRMLS_CC); - if (list) { - efree(list); - } - encoding_detector = php_mb_encoding_detector; - encoding_converter = php_mb_encoding_converter; - encoding_oddlen = php_mb_oddlen; - - /* TODO: make independent from mbstring.encoding_translation? */ - if (MBSTRG(encoding_translation)) { - /* notify internal encoding to Zend Engine */ - name = (char*)mbfl_no_encoding2name(MBSTRG(current_internal_encoding)); - zend_multibyte_set_internal_encoding(name, strlen(name) TSRMLS_CC); - } - - zend_multibyte_set_functions(encoding_detector, encoding_converter, encoding_oddlen TSRMLS_CC); - - return 0; -} -/* }}} */ - -/* {{{ char *php_mb_encoding_detector() - * Interface for Zend Engine - */ -char* php_mb_encoding_detector(const char *arg_string, int arg_length, char *arg_list TSRMLS_DC) -{ - mbfl_string string; - const char *ret; - enum mbfl_no_encoding *elist; - int size, *list; - - /* make encoding list */ - list = NULL; - size = 0; - php_mb_parse_encoding_list(arg_list, strlen(arg_list), &list, &size, 0 TSRMLS_CC); - if (size <= 0) { - return NULL; - } - if (size > 0 && list != NULL) { - elist = list; - } else { - elist = MBSTRG(current_detect_order_list); - size = MBSTRG(current_detect_order_list_size); - } - - mbfl_string_init(&string); - string.no_language = MBSTRG(current_language); - string.val = (char*)arg_string; - string.len = arg_length; - ret = mbfl_identify_encoding_name(&string, elist, size, 0); - if (list != NULL) { - efree((void *)list); - } - if (ret != NULL) { - return estrdup(ret); - } else { - return NULL; - } -} -/* }}} */ - -/* {{{ int php_mb_encoding_converter() */ -int php_mb_encoding_converter(char **to, int *to_length, const char *from, - int from_length, const char *encoding_to, const char *encoding_from - TSRMLS_DC) -{ - mbfl_string string, result, *ret; - enum mbfl_no_encoding from_encoding, to_encoding; - mbfl_buffer_converter *convd; - - /* new encoding */ - to_encoding = mbfl_name2no_encoding(encoding_to); - if (to_encoding == mbfl_no_encoding_invalid) { - return -1; - } - /* old encoding */ - from_encoding = mbfl_name2no_encoding(encoding_from); - if (from_encoding == mbfl_no_encoding_invalid) { - return -1; - } - /* initialize string */ - mbfl_string_init(&string); - mbfl_string_init(&result); - string.no_encoding = from_encoding; - string.no_language = MBSTRG(current_language); - string.val = (char*)from; - string.len = from_length; - - /* initialize converter */ - convd = mbfl_buffer_converter_new(from_encoding, to_encoding, string.len); - if (convd == NULL) { - return -1; - } - mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode)); - mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar)); - - /* do it */ - ret = mbfl_buffer_converter_feed_result(convd, &string, &result); - if (ret != NULL) { - *to = ret->val; - *to_length = ret->len; - } - - MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd); - mbfl_buffer_converter_delete(convd); - - return ret ? 0 : -1; -} -/* }}} */ - -/* {{{ int php_mb_oddlen() - * returns number of odd (e.g. appears only first byte of multibyte - * character) chars - */ -int php_mb_oddlen(const char *string, int length, const char *encoding TSRMLS_DC) -{ - mbfl_string mb_string; - - mbfl_string_init(&mb_string); - mb_string.no_language = MBSTRG(current_language); - mb_string.no_encoding = mbfl_name2no_encoding(encoding); - mb_string.val = (char*)string; - mb_string.len = length; - - if (mb_string.no_encoding == mbfl_no_encoding_invalid) { - return 0; - } - return mbfl_oddlen(&mb_string); -} -/* }}} */ -#endif /* ZEND_MULTIBYTE */ - #endif /* HAVE_MBSTRING */ /* diff --git a/ext/mbstring/mbstring.h b/ext/mbstring/mbstring.h index fd22da97c6..c17726dda7 100644 --- a/ext/mbstring/mbstring.h +++ b/ext/mbstring/mbstring.h @@ -216,16 +216,6 @@ struct mb_overload_def { #define MBSTRG(v) (mbstring_globals.v) #endif -#ifdef ZEND_MULTIBYTE -MBSTRING_API int php_mb_set_zend_encoding(TSRMLS_D); -char* php_mb_encoding_detector(const char *string, int length, char *list - TSRMLS_DC); -int php_mb_encoding_converter(char **to, int *to_length, const char *from, - int from_length, const char *encoding_to, const char *encoding_from - TSRMLS_DC); -int php_mb_oddlen(const char *string, int length, const char *encoding TSRMLS_DC); -#endif /* ZEND_MULTIBYTE */ - #else /* HAVE_MBSTRING */ #define mbstring_module_ptr NULL diff --git a/ext/mbstring/tests/zend-multibyte.phpt b/ext/mbstring/tests/zend_multibyte-01.phpt similarity index 95% rename from ext/mbstring/tests/zend-multibyte.phpt rename to ext/mbstring/tests/zend_multibyte-01.phpt index 9268fdd2f6..d96e0f07d3 100644 --- a/ext/mbstring/tests/zend-multibyte.phpt +++ b/ext/mbstring/tests/zend_multibyte-01.phpt @@ -1,5 +1,5 @@ --TEST-- -zend multibyte +zend multibyte (1) --SKIPIF-- +--INI-- +mbstring.script_encoding=UTF-8 +mbstring.internal_encoding=CP932 +--FILE-- + +--EXPECT-- +string(12) "836583588367" diff --git a/ext/mbstring/tests/zend_multibyte-03.phpt b/ext/mbstring/tests/zend_multibyte-03.phpt new file mode 100644 index 0000000000..ed11c172be --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-03.phpt @@ -0,0 +1,17 @@ +--TEST-- +zend multibyte (3) +--SKIP-- + +--INI-- +mbstring.script_encoding=UTF-8 +mbstring.internal_encoding=EUC-JP +--FILE-- + +--EXPECT-- +string(12) "a5c6a5b9a5c8" diff --git a/ext/mbstring/tests/zend_multibyte-04.phpt b/ext/mbstring/tests/zend_multibyte-04.phpt new file mode 100644 index 0000000000..a89858e983 --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-04.phpt @@ -0,0 +1,17 @@ +--TEST-- +zend multibyte (4) +--SKIP-- + +--INI-- +mbstring.script_encoding=CP932 +mbstring.internal_encoding=UTF-8 +--FILE-- + +--EXPECT-- +string(18) "e38386e382b9e38388" diff --git a/ext/mbstring/tests/zend_multibyte-05.phpt b/ext/mbstring/tests/zend_multibyte-05.phpt new file mode 100644 index 0000000000..4b1d84df9a --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-05.phpt @@ -0,0 +1,20 @@ +--TEST-- +zend multibyte (5) +--SKIP-- + +--INI-- +mbstring.script_encoding=EUC-JP +mbstring.internal_encoding=UTF-8 +--FILE-- + +--EXPECT-- +string(16) "3f3f3fe9b4bb3f3f" diff --git a/ext/mbstring/tests/zend_multibyte-06.phpt b/ext/mbstring/tests/zend_multibyte-06.phpt new file mode 100644 index 0000000000..2816817ede --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-06.phpt @@ -0,0 +1,18 @@ +--TEST-- +zend multibyte (6) +--SKIP-- + +--INI-- +mbstring.script_encoding=EUC-JP +mbstring.internal_encoding=CP932 +--FILE-- + +--EXPECT-- +string(12) "836583588367" diff --git a/ext/mbstring/tests/zend_multibyte-07.phpt b/ext/mbstring/tests/zend_multibyte-07.phpt new file mode 100644 index 0000000000..21589c19cd --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-07.phpt @@ -0,0 +1,18 @@ +--TEST-- +zend multibyte (7) +--SKIP-- + +--INI-- +mbstring.script_encoding=ISO-8859-1 +mbstring.internal_encoding=EUC-JP +--FILE-- + +--EXPECT-- +string(12) "a5c6a5b9a5c8" diff --git a/ext/mbstring/tests/zend_multibyte-08.phpt b/ext/mbstring/tests/zend_multibyte-08.phpt new file mode 100644 index 0000000000..75728fad54 --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-08.phpt @@ -0,0 +1,18 @@ +--TEST-- +zend multibyte (8) +--SKIP-- + +--INI-- +mbstring.script_encoding=ISO-8859-1 +mbstring.internal_encoding=UTF-8 +--FILE-- + +--EXPECT-- +string(18) "e38386e382b9e38388" diff --git a/ext/mbstring/tests/zend_multibyte-09.phpt b/ext/mbstring/tests/zend_multibyte-09.phpt new file mode 100644 index 0000000000..a90ed93bf4 --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-09.phpt @@ -0,0 +1,21 @@ +--TEST-- +zend multibyte (9) +--SKIP-- + +--INI-- +mbstring.script_encoding=cp1251 +mbstring.internal_encoding=UTF-8 +--FILE-- + +--EXPECT-- +string(16) "3f3f3fe9b4bb3f3f" diff --git a/ext/mbstring/tests/zend_multibyte-10.phpt b/ext/mbstring/tests/zend_multibyte-10.phpt new file mode 100644 index 0000000000..cfa948dc07 --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-10.phpt @@ -0,0 +1,15 @@ +--TEST-- +zend multibyte (10) +--SKIP-- + +--FILE-- + +--EXPECTF-- +Fatal error: Encoding declaration pragma must be the very first statement in the script in %s on line 3 diff --git a/ext/mbstring/tests/zend_multibyte-11.phpt b/ext/mbstring/tests/zend_multibyte-11.phpt new file mode 100644 index 0000000000..6409615b9b --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-11.phpt @@ -0,0 +1,16 @@ +--TEST-- +zend multibyte (11) +--SKIP-- + +--FILE-- + +--EXPECTF-- +Fatal error: Encoding declaration pragma must be the very first statement in the script in %s on line 3 diff --git a/ext/mbstring/tests/zend_multibyte-12.phpt b/ext/mbstring/tests/zend_multibyte-12.phpt new file mode 100644 index 0000000000..4af5284003 --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-12.phpt @@ -0,0 +1,16 @@ +--TEST-- +zend multibyte (12) +--SKIP-- + +--FILE-- + +--EXPECTF-- +Fatal error: Encoding declaration pragma must be the very first statement in the script in %s on line 4