andrei Thu Dec 14 23:41:57 2006 UTC Modified files: /php-src/ext/standard var.c var_unserializer.c var_unserializer.re Log: Use 'S' for escaped binary strings and 's' for non-escaped.
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/var.c?r1=1.251&r2=1.252&diff_format=u Index: php-src/ext/standard/var.c diff -u php-src/ext/standard/var.c:1.251 php-src/ext/standard/var.c:1.252 --- php-src/ext/standard/var.c:1.251 Fri Dec 8 21:18:16 2006 +++ php-src/ext/standard/var.c Thu Dec 14 23:41:57 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: var.c,v 1.251 2006/12/08 21:18:16 tony2001 Exp $ */ +/* $Id: var.c,v 1.252 2006/12/14 23:41:57 andrei Exp $ */ @@ -718,7 +718,7 @@ unsigned char c; int i; - smart_str_appendl(buf, "s:", 2); + smart_str_appendl(buf, "S:", 2); smart_str_append_long(buf, len); smart_str_appendl(buf, ":\"", 2); http://cvs.php.net/viewvc.cgi/php-src/ext/standard/var_unserializer.c?r1=1.81&r2=1.82&diff_format=u Index: php-src/ext/standard/var_unserializer.c diff -u php-src/ext/standard/var_unserializer.c:1.81 php-src/ext/standard/var_unserializer.c:1.82 --- php-src/ext/standard/var_unserializer.c:1.81 Fri Dec 1 19:25:11 2006 +++ php-src/ext/standard/var_unserializer.c Thu Dec 14 23:41:57 2006 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.9.12 on Fri Dec 1 11:18:14 2006 */ +/* Generated by re2c 0.9.12 on Thu Dec 14 15:32:34 2006 */ #line 1 "ext/standard/var_unserializer.re" /* +----------------------------------------------------------------------+ @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: var_unserializer.c,v 1.81 2006/12/01 19:25:11 andrei Exp $ */ +/* $Id: var_unserializer.c,v 1.82 2006/12/14 23:41:57 andrei Exp $ */ #include "php.h" #include "ext/standard/php_var.h" @@ -468,110 +468,115 @@ if((YYLIMIT - YYCURSOR) < 7) YYFILL(7); yych = *YYCURSOR; switch(yych){ - case 'C': case 'O': goto yy13; + case 'C': case 'O': goto yy14; case 'N': goto yy5; case 'R': goto yy2; - case 'U': goto yy10; - case 'a': goto yy11; + case 'S': goto yy10; + case 'U': goto yy11; + case 'a': goto yy12; case 'b': goto yy6; case 'd': goto yy8; case 'i': goto yy7; - case 'o': goto yy12; + case 'o': goto yy13; case 'r': goto yy4; case 's': goto yy9; - case '}': goto yy14; - default: goto yy16; + case '}': goto yy15; + default: goto yy17; } yy2: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy95; + if(yych == ':') goto yy103; goto yy3; yy3: -#line 725 "ext/standard/var_unserializer.re" +#line 753 "ext/standard/var_unserializer.re" { return 0; } -#line 493 "ext/standard/var_unserializer.c" +#line 494 "ext/standard/var_unserializer.c" yy4: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy89; + if(yych == ':') goto yy97; goto yy3; yy5: yych = *++YYCURSOR; - if(yych == ';') goto yy87; + if(yych == ';') goto yy95; goto yy3; yy6: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy83; + if(yych == ':') goto yy91; goto yy3; yy7: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy77; + if(yych == ':') goto yy85; goto yy3; yy8: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy53; + if(yych == ':') goto yy61; goto yy3; yy9: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy46; + if(yych == ':') goto yy54; goto yy3; yy10: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy39; + if(yych == ':') goto yy47; goto yy3; yy11: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy32; + if(yych == ':') goto yy40; goto yy3; yy12: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy25; + if(yych == ':') goto yy33; goto yy3; yy13: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy17; + if(yych == ':') goto yy26; goto yy3; -yy14: ++YYCURSOR; - goto yy15; -yy15: -#line 719 "ext/standard/var_unserializer.re" +yy14: yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if(yych == ':') goto yy18; + goto yy3; +yy15: ++YYCURSOR; + goto yy16; +yy16: +#line 747 "ext/standard/var_unserializer.re" { /* this is the case where we have less data than planned */ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Unexpected end of serialized data"); return 0; /* not sure if it should be 0 or 1 here? */ } -#line 542 "ext/standard/var_unserializer.c" -yy16: yych = *++YYCURSOR; - goto yy3; +#line 547 "ext/standard/var_unserializer.c" yy17: yych = *++YYCURSOR; + goto yy3; +yy18: yych = *++YYCURSOR; if(yybm[0+yych] & 128) { - goto yy20; + goto yy21; } - if(yych == '+') goto yy19; - goto yy18; -yy18: YYCURSOR = YYMARKER; + if(yych == '+') goto yy20; + goto yy19; +yy19: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy3; } -yy19: yych = *++YYCURSOR; +yy20: yych = *++YYCURSOR; if(yybm[0+yych] & 128) { - goto yy20; + goto yy21; } - goto yy18; -yy20: ++YYCURSOR; + goto yy19; +yy21: ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - goto yy21; -yy21: if(yybm[0+yych] & 128) { - goto yy20; - } - if(yych != ':') goto yy18; goto yy22; -yy22: yych = *++YYCURSOR; - if(yych != '"') goto yy18; +yy22: if(yybm[0+yych] & 128) { + goto yy21; + } + if(yych != ':') goto yy19; goto yy23; -yy23: ++YYCURSOR; +yy23: yych = *++YYCURSOR; + if(yych != '"') goto yy19; goto yy24; -yy24: -#line 606 "ext/standard/var_unserializer.re" +yy24: ++YYCURSOR; + goto yy25; +yy25: +#line 634 "ext/standard/var_unserializer.re" { size_t len, len2, len3, maxlen; long elements; @@ -684,36 +689,36 @@ return object_common2(UNSERIALIZE_PASSTHRU, elements); } -#line 688 "ext/standard/var_unserializer.c" -yy25: yych = *++YYCURSOR; +#line 693 "ext/standard/var_unserializer.c" +yy26: yych = *++YYCURSOR; if(yych <= ','){ - if(yych != '+') goto yy18; - goto yy26; + if(yych != '+') goto yy19; + goto yy27; } else { - if(yych <= '-') goto yy26; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy27; - goto yy18; - } -yy26: yych = *++YYCURSOR; - if(yych <= '/') goto yy18; - if(yych >= ':') goto yy18; - goto yy27; -yy27: ++YYCURSOR; + if(yych <= '-') goto yy27; + if(yych <= '/') goto yy19; + if(yych <= '9') goto yy28; + goto yy19; + } +yy27: yych = *++YYCURSOR; + if(yych <= '/') goto yy19; + if(yych >= ':') goto yy19; + goto yy28; +yy28: ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - goto yy28; -yy28: if(yych <= '/') goto yy18; - if(yych <= '9') goto yy27; - if(yych >= ';') goto yy18; goto yy29; -yy29: yych = *++YYCURSOR; - if(yych != '"') goto yy18; +yy29: if(yych <= '/') goto yy19; + if(yych <= '9') goto yy28; + if(yych >= ';') goto yy19; goto yy30; -yy30: ++YYCURSOR; +yy30: yych = *++YYCURSOR; + if(yych != '"') goto yy19; goto yy31; -yy31: -#line 598 "ext/standard/var_unserializer.re" +yy31: ++YYCURSOR; + goto yy32; +yy32: +#line 626 "ext/standard/var_unserializer.re" { INIT_PZVAL(*rval); @@ -721,31 +726,31 @@ return object_common2(UNSERIALIZE_PASSTHRU, object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR)); } -#line 725 "ext/standard/var_unserializer.c" -yy32: yych = *++YYCURSOR; - if(yych == '+') goto yy33; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy34; - goto yy18; +#line 730 "ext/standard/var_unserializer.c" yy33: yych = *++YYCURSOR; - if(yych <= '/') goto yy18; - if(yych >= ':') goto yy18; - goto yy34; -yy34: ++YYCURSOR; + if(yych == '+') goto yy34; + if(yych <= '/') goto yy19; + if(yych <= '9') goto yy35; + goto yy19; +yy34: yych = *++YYCURSOR; + if(yych <= '/') goto yy19; + if(yych >= ':') goto yy19; + goto yy35; +yy35: ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - goto yy35; -yy35: if(yych <= '/') goto yy18; - if(yych <= '9') goto yy34; - if(yych >= ';') goto yy18; goto yy36; -yy36: yych = *++YYCURSOR; - if(yych != '{') goto yy18; +yy36: if(yych <= '/') goto yy19; + if(yych <= '9') goto yy35; + if(yych >= ';') goto yy19; goto yy37; -yy37: ++YYCURSOR; +yy37: yych = *++YYCURSOR; + if(yych != '{') goto yy19; goto yy38; -yy38: -#line 576 "ext/standard/var_unserializer.re" +yy38: ++YYCURSOR; + goto yy39; +yy39: +#line 604 "ext/standard/var_unserializer.re" { long elements = parse_iv(start + 2); /* use iv() not uiv() in order to check data range */ @@ -767,31 +772,31 @@ return finish_nested_data(UNSERIALIZE_PASSTHRU); } -#line 771 "ext/standard/var_unserializer.c" -yy39: yych = *++YYCURSOR; - if(yych == '+') goto yy40; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy41; - goto yy18; +#line 776 "ext/standard/var_unserializer.c" yy40: yych = *++YYCURSOR; - if(yych <= '/') goto yy18; - if(yych >= ':') goto yy18; - goto yy41; -yy41: ++YYCURSOR; + if(yych == '+') goto yy41; + if(yych <= '/') goto yy19; + if(yych <= '9') goto yy42; + goto yy19; +yy41: yych = *++YYCURSOR; + if(yych <= '/') goto yy19; + if(yych >= ':') goto yy19; + goto yy42; +yy42: ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - goto yy42; -yy42: if(yych <= '/') goto yy18; - if(yych <= '9') goto yy41; - if(yych >= ';') goto yy18; goto yy43; -yy43: yych = *++YYCURSOR; - if(yych != '"') goto yy18; +yy43: if(yych <= '/') goto yy19; + if(yych <= '9') goto yy42; + if(yych >= ';') goto yy19; goto yy44; -yy44: ++YYCURSOR; +yy44: yych = *++YYCURSOR; + if(yych != '"') goto yy19; goto yy45; -yy45: -#line 547 "ext/standard/var_unserializer.re" +yy45: ++YYCURSOR; + goto yy46; +yy46: +#line 575 "ext/standard/var_unserializer.re" { size_t len, maxlen; UChar *ustr; @@ -820,31 +825,31 @@ ZVAL_UNICODEL(*rval, ustr, len, 0); return 1; } -#line 824 "ext/standard/var_unserializer.c" -yy46: yych = *++YYCURSOR; - if(yych == '+') goto yy47; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy48; - goto yy18; +#line 829 "ext/standard/var_unserializer.c" yy47: yych = *++YYCURSOR; - if(yych <= '/') goto yy18; - if(yych >= ':') goto yy18; - goto yy48; -yy48: ++YYCURSOR; + if(yych == '+') goto yy48; + if(yych <= '/') goto yy19; + if(yych <= '9') goto yy49; + goto yy19; +yy48: yych = *++YYCURSOR; + if(yych <= '/') goto yy19; + if(yych >= ':') goto yy19; + goto yy49; +yy49: ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - goto yy49; -yy49: if(yych <= '/') goto yy18; - if(yych <= '9') goto yy48; - if(yych >= ';') goto yy18; goto yy50; -yy50: yych = *++YYCURSOR; - if(yych != '"') goto yy18; +yy50: if(yych <= '/') goto yy19; + if(yych <= '9') goto yy49; + if(yych >= ';') goto yy19; goto yy51; -yy51: ++YYCURSOR; +yy51: yych = *++YYCURSOR; + if(yych != '"') goto yy19; goto yy52; -yy52: -#line 518 "ext/standard/var_unserializer.re" +yy52: ++YYCURSOR; + goto yy53; +yy53: +#line 546 "ext/standard/var_unserializer.re" { size_t len, maxlen; char *str; @@ -873,95 +878,147 @@ ZVAL_STRINGL(*rval, str, len, 0); return 1; } -#line 877 "ext/standard/var_unserializer.c" -yy53: yych = *++YYCURSOR; +#line 882 "ext/standard/var_unserializer.c" +yy54: yych = *++YYCURSOR; + if(yych == '+') goto yy55; + if(yych <= '/') goto yy19; + if(yych <= '9') goto yy56; + goto yy19; +yy55: yych = *++YYCURSOR; + if(yych <= '/') goto yy19; + if(yych >= ':') goto yy19; + goto yy56; +yy56: ++YYCURSOR; + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + goto yy57; +yy57: if(yych <= '/') goto yy19; + if(yych <= '9') goto yy56; + if(yych >= ';') goto yy19; + goto yy58; +yy58: yych = *++YYCURSOR; + if(yych != '"') goto yy19; + goto yy59; +yy59: ++YYCURSOR; + goto yy60; +yy60: +#line 518 "ext/standard/var_unserializer.re" +{ + size_t len, maxlen; + char *str; + + len = parse_uiv(start + 2); + maxlen = max - YYCURSOR; + if (maxlen < len) { + *p = start + 2; + return 0; + } + + str = (char*)YYCURSOR; + + YYCURSOR += len; + + if (*(YYCURSOR) != '"') { + *p = YYCURSOR; + return 0; + } + + YYCURSOR += 2; + *p = YYCURSOR; + + INIT_PZVAL(*rval); + ZVAL_STRINGL(*rval, str, len, 1); + return 1; +} +#line 934 "ext/standard/var_unserializer.c" +yy61: yych = *++YYCURSOR; if(yych <= '/'){ if(yych <= ','){ - if(yych == '+') goto yy57; - goto yy18; + if(yych == '+') goto yy65; + goto yy19; } else { - if(yych <= '-') goto yy55; - if(yych <= '.') goto yy60; - goto yy18; + if(yych <= '-') goto yy63; + if(yych <= '.') goto yy68; + goto yy19; } } else { if(yych <= 'I'){ - if(yych <= '9') goto yy58; - if(yych <= 'H') goto yy18; - goto yy56; + if(yych <= '9') goto yy66; + if(yych <= 'H') goto yy19; + goto yy64; } else { - if(yych != 'N') goto yy18; - goto yy54; + if(yych != 'N') goto yy19; + goto yy62; } } -yy54: yych = *++YYCURSOR; - if(yych == 'A') goto yy76; - goto yy18; -yy55: yych = *++YYCURSOR; +yy62: yych = *++YYCURSOR; + if(yych == 'A') goto yy84; + goto yy19; +yy63: yych = *++YYCURSOR; if(yych <= '/'){ - if(yych == '.') goto yy60; - goto yy18; + if(yych == '.') goto yy68; + goto yy19; } else { - if(yych <= '9') goto yy58; - if(yych != 'I') goto yy18; - goto yy56; - } -yy56: yych = *++YYCURSOR; - if(yych == 'N') goto yy72; - goto yy18; -yy57: yych = *++YYCURSOR; - if(yych == '.') goto yy60; - if(yych <= '/') goto yy18; - if(yych >= ':') goto yy18; - goto yy58; -yy58: ++YYCURSOR; + if(yych <= '9') goto yy66; + if(yych != 'I') goto yy19; + goto yy64; + } +yy64: yych = *++YYCURSOR; + if(yych == 'N') goto yy80; + goto yy19; +yy65: yych = *++YYCURSOR; + if(yych == '.') goto yy68; + if(yych <= '/') goto yy19; + if(yych >= ':') goto yy19; + goto yy66; +yy66: ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; - goto yy59; -yy59: if(yych <= ':'){ + goto yy67; +yy67: if(yych <= ':'){ if(yych <= '.'){ - if(yych <= '-') goto yy18; - goto yy70; + if(yych <= '-') goto yy19; + goto yy78; } else { - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy58; - goto yy18; + if(yych <= '/') goto yy19; + if(yych <= '9') goto yy66; + goto yy19; } } else { if(yych <= 'E'){ - if(yych <= ';') goto yy63; - if(yych <= 'D') goto yy18; - goto yy65; + if(yych <= ';') goto yy71; + if(yych <= 'D') goto yy19; + goto yy73; } else { - if(yych == 'e') goto yy65; - goto yy18; + if(yych == 'e') goto yy73; + goto yy19; } } -yy60: yych = *++YYCURSOR; - if(yych <= '/') goto yy18; - if(yych >= ':') goto yy18; - goto yy61; -yy61: ++YYCURSOR; +yy68: yych = *++YYCURSOR; + if(yych <= '/') goto yy19; + if(yych >= ':') goto yy19; + goto yy69; +yy69: ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; - goto yy62; -yy62: if(yych <= ';'){ - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy61; - if(yych <= ':') goto yy18; - goto yy63; + goto yy70; +yy70: if(yych <= ';'){ + if(yych <= '/') goto yy19; + if(yych <= '9') goto yy69; + if(yych <= ':') goto yy19; + goto yy71; } else { if(yych <= 'E'){ - if(yych <= 'D') goto yy18; - goto yy65; + if(yych <= 'D') goto yy19; + goto yy73; } else { - if(yych == 'e') goto yy65; - goto yy18; + if(yych == 'e') goto yy73; + goto yy19; } } -yy63: ++YYCURSOR; - goto yy64; -yy64: +yy71: ++YYCURSOR; + goto yy72; +yy72: #line 511 "ext/standard/var_unserializer.re" { *p = YYCURSOR; @@ -969,66 +1026,66 @@ ZVAL_DOUBLE(*rval, zend_strtod((const char *)start + 2, NULL)); return 1; } -#line 973 "ext/standard/var_unserializer.c" -yy65: yych = *++YYCURSOR; +#line 1030 "ext/standard/var_unserializer.c" +yy73: yych = *++YYCURSOR; if(yych <= ','){ - if(yych != '+') goto yy18; - goto yy66; + if(yych != '+') goto yy19; + goto yy74; } else { - if(yych <= '-') goto yy66; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy67; - goto yy18; + if(yych <= '-') goto yy74; + if(yych <= '/') goto yy19; + if(yych <= '9') goto yy75; + goto yy19; } -yy66: yych = *++YYCURSOR; +yy74: yych = *++YYCURSOR; if(yych <= ','){ - if(yych == '+') goto yy69; - goto yy18; + if(yych == '+') goto yy77; + goto yy19; } else { - if(yych <= '-') goto yy69; - if(yych <= '/') goto yy18; - if(yych >= ':') goto yy18; - goto yy67; + if(yych <= '-') goto yy77; + if(yych <= '/') goto yy19; + if(yych >= ':') goto yy19; + goto yy75; } -yy67: ++YYCURSOR; +yy75: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy68; -yy68: if(yych <= '/') goto yy18; - if(yych <= '9') goto yy67; - if(yych == ';') goto yy63; - goto yy18; -yy69: yych = *++YYCURSOR; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy67; - goto yy18; -yy70: ++YYCURSOR; + goto yy76; +yy76: if(yych <= '/') goto yy19; + if(yych <= '9') goto yy75; + if(yych == ';') goto yy71; + goto yy19; +yy77: yych = *++YYCURSOR; + if(yych <= '/') goto yy19; + if(yych <= '9') goto yy75; + goto yy19; +yy78: ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; - goto yy71; -yy71: if(yych <= ';'){ - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy70; - if(yych <= ':') goto yy18; - goto yy63; + goto yy79; +yy79: if(yych <= ';'){ + if(yych <= '/') goto yy19; + if(yych <= '9') goto yy78; + if(yych <= ':') goto yy19; + goto yy71; } else { if(yych <= 'E'){ - if(yych <= 'D') goto yy18; - goto yy65; + if(yych <= 'D') goto yy19; + goto yy73; } else { - if(yych == 'e') goto yy65; - goto yy18; + if(yych == 'e') goto yy73; + goto yy19; } } -yy72: yych = *++YYCURSOR; - if(yych != 'F') goto yy18; - goto yy73; -yy73: yych = *++YYCURSOR; - if(yych != ';') goto yy18; - goto yy74; -yy74: ++YYCURSOR; - goto yy75; -yy75: +yy80: yych = *++YYCURSOR; + if(yych != 'F') goto yy19; + goto yy81; +yy81: yych = *++YYCURSOR; + if(yych != ';') goto yy19; + goto yy82; +yy82: ++YYCURSOR; + goto yy83; +yy83: #line 496 "ext/standard/var_unserializer.re" { *p = YYCURSOR; @@ -1044,35 +1101,35 @@ return 1; } -#line 1048 "ext/standard/var_unserializer.c" -yy76: yych = *++YYCURSOR; - if(yych == 'N') goto yy73; - goto yy18; -yy77: yych = *++YYCURSOR; +#line 1105 "ext/standard/var_unserializer.c" +yy84: yych = *++YYCURSOR; + if(yych == 'N') goto yy81; + goto yy19; +yy85: yych = *++YYCURSOR; if(yych <= ','){ - if(yych != '+') goto yy18; - goto yy78; + if(yych != '+') goto yy19; + goto yy86; } else { - if(yych <= '-') goto yy78; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy79; - goto yy18; - } -yy78: yych = *++YYCURSOR; - if(yych <= '/') goto yy18; - if(yych >= ':') goto yy18; - goto yy79; -yy79: ++YYCURSOR; + if(yych <= '-') goto yy86; + if(yych <= '/') goto yy19; + if(yych <= '9') goto yy87; + goto yy19; + } +yy86: yych = *++YYCURSOR; + if(yych <= '/') goto yy19; + if(yych >= ':') goto yy19; + goto yy87; +yy87: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy80; -yy80: if(yych <= '/') goto yy18; - if(yych <= '9') goto yy79; - if(yych != ';') goto yy18; - goto yy81; -yy81: ++YYCURSOR; - goto yy82; -yy82: + goto yy88; +yy88: if(yych <= '/') goto yy19; + if(yych <= '9') goto yy87; + if(yych != ';') goto yy19; + goto yy89; +yy89: ++YYCURSOR; + goto yy90; +yy90: #line 489 "ext/standard/var_unserializer.re" { *p = YYCURSOR; @@ -1080,17 +1137,17 @@ ZVAL_LONG(*rval, parse_iv(start + 2)); return 1; } -#line 1084 "ext/standard/var_unserializer.c" -yy83: yych = *++YYCURSOR; - if(yych <= '/') goto yy18; - if(yych >= '2') goto yy18; - goto yy84; -yy84: yych = *++YYCURSOR; - if(yych != ';') goto yy18; - goto yy85; -yy85: ++YYCURSOR; - goto yy86; -yy86: +#line 1141 "ext/standard/var_unserializer.c" +yy91: yych = *++YYCURSOR; + if(yych <= '/') goto yy19; + if(yych >= '2') goto yy19; + goto yy92; +yy92: yych = *++YYCURSOR; + if(yych != ';') goto yy19; + goto yy93; +yy93: ++YYCURSOR; + goto yy94; +yy94: #line 482 "ext/standard/var_unserializer.re" { *p = YYCURSOR; @@ -1098,10 +1155,10 @@ ZVAL_BOOL(*rval, parse_iv(start + 2)); return 1; } -#line 1102 "ext/standard/var_unserializer.c" -yy87: ++YYCURSOR; - goto yy88; -yy88: +#line 1159 "ext/standard/var_unserializer.c" +yy95: ++YYCURSOR; + goto yy96; +yy96: #line 475 "ext/standard/var_unserializer.re" { *p = YYCURSOR; @@ -1109,32 +1166,32 @@ ZVAL_NULL(*rval); return 1; } -#line 1113 "ext/standard/var_unserializer.c" -yy89: yych = *++YYCURSOR; +#line 1170 "ext/standard/var_unserializer.c" +yy97: yych = *++YYCURSOR; if(yych <= ','){ - if(yych != '+') goto yy18; - goto yy90; + if(yych != '+') goto yy19; + goto yy98; } else { - if(yych <= '-') goto yy90; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy91; - goto yy18; - } -yy90: yych = *++YYCURSOR; - if(yych <= '/') goto yy18; - if(yych >= ':') goto yy18; - goto yy91; -yy91: ++YYCURSOR; + if(yych <= '-') goto yy98; + if(yych <= '/') goto yy19; + if(yych <= '9') goto yy99; + goto yy19; + } +yy98: yych = *++YYCURSOR; + if(yych <= '/') goto yy19; + if(yych >= ':') goto yy19; + goto yy99; +yy99: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy92; -yy92: if(yych <= '/') goto yy18; - if(yych <= '9') goto yy91; - if(yych != ';') goto yy18; - goto yy93; -yy93: ++YYCURSOR; - goto yy94; -yy94: + goto yy100; +yy100: if(yych <= '/') goto yy19; + if(yych <= '9') goto yy99; + if(yych != ';') goto yy19; + goto yy101; +yy101: ++YYCURSOR; + goto yy102; +yy102: #line 452 "ext/standard/var_unserializer.re" { long id; @@ -1158,32 +1215,32 @@ return 1; } -#line 1162 "ext/standard/var_unserializer.c" -yy95: yych = *++YYCURSOR; +#line 1219 "ext/standard/var_unserializer.c" +yy103: yych = *++YYCURSOR; if(yych <= ','){ - if(yych != '+') goto yy18; - goto yy96; + if(yych != '+') goto yy19; + goto yy104; } else { - if(yych <= '-') goto yy96; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy97; - goto yy18; - } -yy96: yych = *++YYCURSOR; - if(yych <= '/') goto yy18; - if(yych >= ':') goto yy18; - goto yy97; -yy97: ++YYCURSOR; + if(yych <= '-') goto yy104; + if(yych <= '/') goto yy19; + if(yych <= '9') goto yy105; + goto yy19; + } +yy104: yych = *++YYCURSOR; + if(yych <= '/') goto yy19; + if(yych >= ':') goto yy19; + goto yy105; +yy105: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy98; -yy98: if(yych <= '/') goto yy18; - if(yych <= '9') goto yy97; - if(yych != ';') goto yy18; - goto yy99; -yy99: ++YYCURSOR; - goto yy100; -yy100: + goto yy106; +yy106: if(yych <= '/') goto yy19; + if(yych <= '9') goto yy105; + if(yych != ';') goto yy19; + goto yy107; +yy107: ++YYCURSOR; + goto yy108; +yy108: #line 431 "ext/standard/var_unserializer.re" { long id; @@ -1205,10 +1262,10 @@ return 1; } -#line 1209 "ext/standard/var_unserializer.c" +#line 1266 "ext/standard/var_unserializer.c" } } -#line 727 "ext/standard/var_unserializer.re" +#line 755 "ext/standard/var_unserializer.re" return 0; http://cvs.php.net/viewvc.cgi/php-src/ext/standard/var_unserializer.re?r1=1.60&r2=1.61&diff_format=u Index: php-src/ext/standard/var_unserializer.re diff -u php-src/ext/standard/var_unserializer.re:1.60 php-src/ext/standard/var_unserializer.re:1.61 --- php-src/ext/standard/var_unserializer.re:1.60 Fri Dec 1 19:25:11 2006 +++ php-src/ext/standard/var_unserializer.re Thu Dec 14 23:41:57 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: var_unserializer.re,v 1.60 2006/12/01 19:25:11 andrei Exp $ */ +/* $Id: var_unserializer.re,v 1.61 2006/12/14 23:41:57 andrei Exp $ */ #include "php.h" #include "ext/standard/php_var.h" @@ -526,6 +526,34 @@ return 0; } + str = (char*)YYCURSOR; + + YYCURSOR += len; + + if (*(YYCURSOR) != '"') { + *p = YYCURSOR; + return 0; + } + + YYCURSOR += 2; + *p = YYCURSOR; + + INIT_PZVAL(*rval); + ZVAL_STRINGL(*rval, str, len, 1); + return 1; +} + +"S:" uiv ":" ["] { + size_t len, maxlen; + char *str; + + len = parse_uiv(start + 2); + maxlen = max - YYCURSOR; + if (maxlen < len) { + *p = start + 2; + return 0; + } + if ((str = unserialize_str(&YYCURSOR, len)) == NULL) { return 0; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php