start = cursor;
- #line 649 "ext/standard/var_unserializer.c"
-#line 613 "ext/standard/var_unserializer.c"
++#line 655 "ext/standard/var_unserializer.c"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
yy2:
++YYCURSOR;
yy3:
- #line 1036 "ext/standard/var_unserializer.re"
-#line 988 "ext/standard/var_unserializer.re"
++#line 1042 "ext/standard/var_unserializer.re"
{ return 0; }
- #line 709 "ext/standard/var_unserializer.c"
-#line 673 "ext/standard/var_unserializer.c"
++#line 715 "ext/standard/var_unserializer.c"
yy4:
yych = *(YYMARKER = ++YYCURSOR);
if (yych == ':') goto yy17;
goto yy3;
yy15:
++YYCURSOR;
- #line 1030 "ext/standard/var_unserializer.re"
-#line 982 "ext/standard/var_unserializer.re"
++#line 1036 "ext/standard/var_unserializer.re"
{
/* this is the case where we have less data than planned */
php_error_docref(NULL, E_NOTICE, "Unexpected end of serialized data");
return 0; /* not sure if it should be 0 or 1 here? */
}
- #line 762 "ext/standard/var_unserializer.c"
-#line 726 "ext/standard/var_unserializer.c"
++#line 768 "ext/standard/var_unserializer.c"
yy17:
yych = *++YYCURSOR;
if (yybm[0+yych] & 128) {
goto yy3;
yy19:
++YYCURSOR;
- #line 702 "ext/standard/var_unserializer.re"
-#line 666 "ext/standard/var_unserializer.re"
++#line 708 "ext/standard/var_unserializer.re"
{
*p = YYCURSOR;
ZVAL_NULL(rval);
return 1;
}
- #line 779 "ext/standard/var_unserializer.c"
-#line 744 "ext/standard/var_unserializer.c"
++#line 785 "ext/standard/var_unserializer.c"
yy21:
yych = *++YYCURSOR;
- if (yych <= ',') {
- if (yych == '+') goto yy33;
- goto yy18;
- } else {
- if (yych <= '-') goto yy33;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy34;
- goto yy18;
- }
+ if (yych <= '/') goto yy18;
+ if (yych <= '9') goto yy32;
+ goto yy18;
yy22:
yych = *++YYCURSOR;
- if (yych == '+') goto yy36;
if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy37;
+ if (yych <= '9') goto yy34;
goto yy18;
yy23:
yych = *++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy60;
- if (yych <= ':') goto yy81;
+ if (yych <= '9') goto yy53;
+ if (yych <= ':') goto yy74;
goto yy18;
-yy62:
+yy55:
yych = *++YYCURSOR;
- if (yych == '"') goto yy82;
+ if (yych == '"') goto yy75;
goto yy18;
-yy63:
+yy56:
++YYCURSOR;
- #line 653 "ext/standard/var_unserializer.re"
-#line 617 "ext/standard/var_unserializer.re"
++#line 659 "ext/standard/var_unserializer.re"
{
zend_long id;
return 1;
}
- #line 1003 "ext/standard/var_unserializer.c"
-#line 1019 "ext/standard/var_unserializer.c"
-yy65:
++#line 1009 "ext/standard/var_unserializer.c"
+yy58:
yych = *++YYCURSOR;
- if (yych == '"') goto yy84;
+ if (yych == '"') goto yy77;
goto yy18;
-yy66:
+yy59:
yych = *++YYCURSOR;
- if (yych == '{') goto yy86;
+ if (yych == '{') goto yy79;
goto yy18;
-yy67:
+yy60:
++YYCURSOR;
- #line 708 "ext/standard/var_unserializer.re"
-#line 672 "ext/standard/var_unserializer.re"
++#line 714 "ext/standard/var_unserializer.re"
{
*p = YYCURSOR;
ZVAL_BOOL(rval, parse_iv(start + 2));
return 1;
}
- #line 1020 "ext/standard/var_unserializer.c"
-#line 1036 "ext/standard/var_unserializer.c"
-yy69:
++#line 1026 "ext/standard/var_unserializer.c"
+yy62:
++YYCURSOR;
- if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+ if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
if (yych <= ';') {
if (yych <= '/') goto yy18;
goto yy18;
}
}
-yy71:
+yy64:
++YYCURSOR;
- #line 756 "ext/standard/var_unserializer.re"
-#line 720 "ext/standard/var_unserializer.re"
++#line 762 "ext/standard/var_unserializer.re"
{
#if SIZEOF_ZEND_LONG == 4
use_double:
ZVAL_DOUBLE(rval, zend_strtod((const char *)start + 2, NULL));
return 1;
}
- #line 1049 "ext/standard/var_unserializer.c"
-#line 1065 "ext/standard/var_unserializer.c"
-yy73:
++#line 1055 "ext/standard/var_unserializer.c"
+yy66:
yych = *++YYCURSOR;
if (yych <= ',') {
- if (yych == '+') goto yy88;
+ if (yych == '+') goto yy81;
goto yy18;
} else {
- if (yych <= '-') goto yy88;
+ if (yych <= '-') goto yy81;
if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy89;
+ if (yych <= '9') goto yy82;
goto yy18;
}
-yy74:
+yy67:
yych = *++YYCURSOR;
- if (yych == 'F') goto yy91;
+ if (yych == 'F') goto yy84;
goto yy18;
-yy75:
+yy68:
yych = *++YYCURSOR;
- if (yych == 'N') goto yy91;
+ if (yych == 'N') goto yy84;
goto yy18;
-yy76:
+yy69:
++YYCURSOR;
- #line 714 "ext/standard/var_unserializer.re"
-#line 678 "ext/standard/var_unserializer.re"
++#line 720 "ext/standard/var_unserializer.re"
{
#if SIZEOF_ZEND_LONG == 4
int digits = YYCURSOR - start - 3;
ZVAL_LONG(rval, parse_iv(start + 2));
return 1;
}
- #line 1097 "ext/standard/var_unserializer.c"
-#line 1113 "ext/standard/var_unserializer.c"
-yy78:
++#line 1103 "ext/standard/var_unserializer.c"
+yy71:
yych = *++YYCURSOR;
- if (yych == '"') goto yy92;
+ if (yych == '"') goto yy85;
goto yy18;
-yy79:
+yy72:
++YYCURSOR;
- #line 678 "ext/standard/var_unserializer.re"
-#line 642 "ext/standard/var_unserializer.re"
++#line 684 "ext/standard/var_unserializer.re"
{
zend_long id;
return 1;
}
- #line 1128 "ext/standard/var_unserializer.c"
-#line 1144 "ext/standard/var_unserializer.c"
-yy81:
++#line 1134 "ext/standard/var_unserializer.c"
+yy74:
yych = *++YYCURSOR;
- if (yych == '"') goto yy94;
+ if (yych == '"') goto yy87;
goto yy18;
-yy82:
+yy75:
++YYCURSOR;
- #line 878 "ext/standard/var_unserializer.re"
-#line 830 "ext/standard/var_unserializer.re"
++#line 884 "ext/standard/var_unserializer.re"
{
size_t len, len2, len3, maxlen;
zend_long elements;
return object_common2(UNSERIALIZE_PASSTHRU, elements);
}
- #line 1287 "ext/standard/var_unserializer.c"
-#line 1303 "ext/standard/var_unserializer.c"
-yy84:
++#line 1293 "ext/standard/var_unserializer.c"
+yy77:
++YYCURSOR;
- #line 803 "ext/standard/var_unserializer.re"
-#line 761 "ext/standard/var_unserializer.re"
++#line 809 "ext/standard/var_unserializer.re"
{
size_t len, maxlen;
zend_string *str;
ZVAL_STR(rval, str);
return 1;
}
- #line 1324 "ext/standard/var_unserializer.c"
-#line 1340 "ext/standard/var_unserializer.c"
-yy86:
++#line 1330 "ext/standard/var_unserializer.c"
+yy79:
++YYCURSOR;
- #line 837 "ext/standard/var_unserializer.re"
-#line 795 "ext/standard/var_unserializer.re"
++#line 843 "ext/standard/var_unserializer.re"
{
zend_long elements = parse_iv(start + 2);
/* use iv() not uiv() in order to check data range */
return finish_nested_data(UNSERIALIZE_PASSTHRU);
}
- #line 1357 "ext/standard/var_unserializer.c"
-#line 1367 "ext/standard/var_unserializer.c"
-yy88:
++#line 1363 "ext/standard/var_unserializer.c"
+yy81:
yych = *++YYCURSOR;
- if (yych <= ',') {
- if (yych == '+') goto yy96;
- goto yy18;
- } else {
- if (yych <= '-') goto yy96;
- if (yych <= '/') goto yy18;
- if (yych >= ':') goto yy18;
- }
-yy89:
+ if (yych <= '/') goto yy18;
+ if (yych >= ':') goto yy18;
+yy82:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy89;
- if (yych == ';') goto yy71;
+ if (yych <= '9') goto yy82;
+ if (yych == ';') goto yy64;
goto yy18;
-yy91:
+yy84:
yych = *++YYCURSOR;
- if (yych == ';') goto yy97;
+ if (yych == ';') goto yy89;
goto yy18;
-yy92:
+yy85:
++YYCURSOR;
- #line 867 "ext/standard/var_unserializer.re"
-#line 819 "ext/standard/var_unserializer.re"
++#line 873 "ext/standard/var_unserializer.re"
{
zend_long elements;
if (!var_hash) return 0;
}
return object_common2(UNSERIALIZE_PASSTHRU, elements);
}
- #line 1387 "ext/standard/var_unserializer.c"
-#line 1403 "ext/standard/var_unserializer.c"
-yy94:
++#line 1393 "ext/standard/var_unserializer.c"
+yy87:
++YYCURSOR;
- #line 765 "ext/standard/var_unserializer.re"
-#line 729 "ext/standard/var_unserializer.re"
++#line 771 "ext/standard/var_unserializer.re"
{
size_t len, maxlen;
char *str;
YYCURSOR += 2;
*p = YYCURSOR;
- ZVAL_STRINGL(rval, str, len);
+ if (len == 0) {
+ ZVAL_EMPTY_STRING(rval);
+ } else if (len == 1) {
+ ZVAL_INTERNED_STR(rval, ZSTR_CHAR((zend_uchar)*str));
+ } else {
+ ZVAL_STRINGL(rval, str, len);
+ }
return 1;
}
- #line 1428 "ext/standard/var_unserializer.c"
-#line 1438 "ext/standard/var_unserializer.c"
-yy96:
- yych = *++YYCURSOR;
- if (yych <= '/') goto yy18;
- if (yych <= '9') goto yy89;
- goto yy18;
-yy97:
++#line 1434 "ext/standard/var_unserializer.c"
+yy89:
++YYCURSOR;
- #line 740 "ext/standard/var_unserializer.re"
-#line 704 "ext/standard/var_unserializer.re"
++#line 746 "ext/standard/var_unserializer.re"
{
*p = YYCURSOR;
return 1;
}
- #line 1447 "ext/standard/var_unserializer.c"
-#line 1462 "ext/standard/var_unserializer.c"
++#line 1453 "ext/standard/var_unserializer.c"
}
- #line 1038 "ext/standard/var_unserializer.re"
-#line 990 "ext/standard/var_unserializer.re"
++#line 1044 "ext/standard/var_unserializer.re"
return 0;