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

Reply via email to