-/* Generated by re2c 0.11.2 on Tue Mar 27 13:27:10 2007 */
+/* Generated by re2c 0.12.1 on Mon Aug 6 21:30:07 2007 */
#line 1 "ext/standard/var_unserializer.re"
/*
+----------------------------------------------------------------------+
char *str = safe_emalloc(*len, 1, 1);
unsigned char *end = *(unsigned char **)p+maxlen;
- if(end < *p) {
+ if (end < *p) {
efree(str);
return NULL;
}
{
long i;
var_entries *var_hash = var_hashx->first;
-
+
while (var_hash) {
for (i = 0; i < var_hash->used_slots; i++) {
if (var_hash->data[i] == ozval) {
static int var_access(php_unserialize_data_t *var_hashx, long id, zval ***store)
{
var_entries *var_hash = var_hashx->first;
-
+
while (id >= VAR_ENTRIES_MAX && var_hash && var_hash->used_slots == VAR_ENTRIES_MAX) {
var_hash = var_hash->next;
id -= VAR_ENTRIES_MAX;
void *next;
long i;
var_entries *var_hash = var_hashx->first;
-
+
while (var_hash) {
next = var_hash->next;
efree(var_hash);
}
var_hash = var_hashx->first_dtor;
-
+
while (var_hash) {
for (i = 0; i < var_hash->used_slots; i++) {
zval_ptr_dtor(&var_hash->data[i]);
#define YYMARKER marker
-#line 226 "ext/standard/var_unserializer.re"
+#line 230 "ext/standard/var_unserializer.re"
case '+':
p++;
}
-
+
while (1) {
cursor = (char)*p;
if (cursor >= '0' && cursor <= '9') {
if (*p == '+') {
p++;
}
-
+
while (1) {
cursor = *p;
if (cursor >= '0' && cursor <= '9') {
}
if (Z_TYPE_P(key) != IS_LONG &&
- Z_TYPE_P(key) != IS_STRING &&
- Z_TYPE_P(key) != IS_UNICODE) {
+ Z_TYPE_P(key) != IS_STRING &&
+ Z_TYPE_P(key) != IS_UNICODE
+ ) {
zval_dtor(key);
FREE_ZVAL(key);
return 0;
zend_u_hash_update(ht, Z_TYPE_P(key), Z_UNIVAL_P(key), Z_UNILEN_P(key) + 1, &data, sizeof(data), NULL);
break;
}
-
+
zval_dtor(key);
FREE_ZVAL(key);
- if (elements && *(*p-1) != ';' && *(*p-1) != '}') {
+ if (elements && *(*p-1) != ';' && *(*p-1) != '}') {
(*p)--;
return 0;
}
static inline int finish_nested_data(UNSERIALIZE_PARAMETER)
{
- if (*((*p)++) == '}')
+ if (*((*p)++) == '}')
return 1;
#if SOMETHING_NEW_MIGHT_LEAD_TO_CRASH_ENABLE_IF_YOU_ARE_BRAVE
zstr buf;
size_t buf_len;
- if(ce->unserialize == NULL) {
+ if (ce->unserialize == NULL) {
zend_error(E_WARNING, "Class %v has no unserializer", ce->name);
return 0;
}
zend_error(E_WARNING, "Illegal data for unserializing");
return 0;
}
-
- if(datalen < 0 || (*p) + datalen >= max) {
- zend_error(E_WARNING, "Insufficient data for unserializing - %ld required, %d present", datalen, max - (*p));
+
+ if (datalen < 0 || (*p) + datalen >= max) {
+ zend_error(E_WARNING, "Insufficient data for unserializing - %ld required, %ld present", datalen, max - (*p));
return 0;
}
buf_len = datalen;
(*p) += datalen;
}
- if(ce->unserialize(rval, ce, type, buf, buf_len, (zend_unserialize_data *)var_hash TSRMLS_CC) != SUCCESS) {
+ if (ce->unserialize(rval, ce, type, buf, buf_len, (zend_unserialize_data *)var_hash TSRMLS_CC) != SUCCESS) {
if (type == IS_UNICODE) {
efree(buf.v);
}
static inline long object_common1(UNSERIALIZE_PARAMETER, zend_class_entry *ce)
{
long elements;
-
+
elements = parse_iv2((*p) + 2, p);
(*p) += 2;
-
+
object_init_ex(*rval, ce);
return elements;
}
}
if (Z_OBJCE_PP(rval) != PHP_IC_ENTRY &&
- zend_hash_exists(&Z_OBJCE_PP(rval)->function_table, "__wakeup", sizeof("__wakeup"))) {
+ zend_hash_exists(&Z_OBJCE_PP(rval)->function_table, "__wakeup", sizeof("__wakeup"))) {
INIT_PZVAL(&fname);
ZVAL_ASCII_STRINGL(&fname, "__wakeup", sizeof("__wakeup") - 1, 1);
call_user_function_ex(CG(function_table), rval, &fname, &retval_ptr, 0, 0, 1, NULL TSRMLS_CC);
zval **rval_ref;
limit = cursor = *p;
-
+
if (var_hash && cursor[0] != 'R') {
var_push(var_hash, rval);
}
start = cursor;
-
-
{
static const unsigned char yybm[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-#line 485 "ext/standard/var_unserializer.c"
+#line 502 "ext/standard/var_unserializer.c"
{
YYCTYPE yych;
yych = *(YYMARKER = ++YYCURSOR);
if(yych == ':') goto yy103;
yy3:
-#line 776 "ext/standard/var_unserializer.re"
+#line 793 "ext/standard/var_unserializer.re"
{ return 0; }
-#line 514 "ext/standard/var_unserializer.c"
+#line 531 "ext/standard/var_unserializer.c"
yy4:
yych = *(YYMARKER = ++YYCURSOR);
if(yych == ':') goto yy97;
goto yy3;
yy15:
++YYCURSOR;
-#line 770 "ext/standard/var_unserializer.re"
+#line 787 "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 567 "ext/standard/var_unserializer.c"
+#line 584 "ext/standard/var_unserializer.c"
yy17:
yych = *++YYCURSOR;
goto yy3;
yych = *++YYCURSOR;
if(yych != '"') goto yy19;
++YYCURSOR;
-#line 657 "ext/standard/var_unserializer.re"
+#line 674 "ext/standard/var_unserializer.re"
{
size_t len, len2, len3, maxlen;
long elements;
zval **args[1];
zval *arg_func_name;
- if(*start == 'C') {
+ if (*start == 'C') {
custom_object = 1;
}
-
+
INIT_PZVAL(*rval);
len2 = len = parse_uiv(start + 2);
maxlen = max - YYCURSOR;
ce = *pce;
break;
}
-
+
/* Check for unserialize callback */
if ((PG(unserialize_callback_func) == NULL) || (PG(unserialize_callback_func)[0] == '\0')) {
incomplete_class = 1;
ce = PHP_IC_ENTRY;
break;
}
-
+
/* Call unserialize callback */
MAKE_STD_ZVAL(user_func);
ZVAL_STRING(user_func, PG(unserialize_callback_func), 1);
if (retval_ptr) {
zval_ptr_dtor(&retval_ptr);
}
-
+
/* The callback function may have defined the class */
if (zend_u_lookup_class(UG(unicode)?IS_UNICODE:IS_STRING, class_name, len2, &pce TSRMLS_CC) == SUCCESS) {
ce = *pce;
*p = YYCURSOR;
- if(custom_object) {
+ if (custom_object) {
efree(class_name.v);
return object_custom(UNSERIALIZE_PASSTHRU, ce);
}
-
+
elements = object_common1(UNSERIALIZE_PASSTHRU, ce);
if (incomplete_class) {
return object_common2(UNSERIALIZE_PASSTHRU, elements);
}
-#line 710 "ext/standard/var_unserializer.c"
+#line 727 "ext/standard/var_unserializer.c"
yy26:
yych = *++YYCURSOR;
if(yych <= ',') {
yych = *++YYCURSOR;
if(yych != '"') goto yy19;
++YYCURSOR;
-#line 649 "ext/standard/var_unserializer.re"
+#line 666 "ext/standard/var_unserializer.re"
{
INIT_PZVAL(*rval);
-
+
return object_common2(UNSERIALIZE_PASSTHRU,
object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR));
}
-#line 743 "ext/standard/var_unserializer.c"
+#line 760 "ext/standard/var_unserializer.c"
yy33:
yych = *++YYCURSOR;
if(yych == '+') goto yy34;
yych = *++YYCURSOR;
if(yych != '{') goto yy19;
++YYCURSOR;
-#line 627 "ext/standard/var_unserializer.re"
+#line 644 "ext/standard/var_unserializer.re"
{
long elements = parse_iv(start + 2);
/* use iv() not uiv() in order to check data range */
return finish_nested_data(UNSERIALIZE_PASSTHRU);
}
-#line 786 "ext/standard/var_unserializer.c"
+#line 803 "ext/standard/var_unserializer.c"
yy40:
yych = *++YYCURSOR;
if(yych == '+') goto yy41;
yych = *++YYCURSOR;
if(yych != '"') goto yy19;
++YYCURSOR;
-#line 598 "ext/standard/var_unserializer.re"
+#line 615 "ext/standard/var_unserializer.re"
{
size_t len, maxlen;
UChar *ustr;
ZVAL_UNICODEL(*rval, ustr, len, 0);
return 1;
}
-#line 836 "ext/standard/var_unserializer.c"
+#line 853 "ext/standard/var_unserializer.c"
yy47:
yych = *++YYCURSOR;
if(yych == '+') goto yy48;
yych = *++YYCURSOR;
if(yych != '"') goto yy19;
++YYCURSOR;
-#line 569 "ext/standard/var_unserializer.re"
+#line 586 "ext/standard/var_unserializer.re"
{
size_t len, maxlen;
char *str;
ZVAL_STRINGL(*rval, str, len, 0);
return 1;
}
-#line 886 "ext/standard/var_unserializer.c"
+#line 903 "ext/standard/var_unserializer.c"
yy54:
yych = *++YYCURSOR;
if(yych == '+') goto yy55;
yych = *++YYCURSOR;
if(yych != '"') goto yy19;
++YYCURSOR;
-#line 541 "ext/standard/var_unserializer.re"
+#line 558 "ext/standard/var_unserializer.re"
{
size_t len, maxlen;
char *str;
ZVAL_STRINGL(*rval, str, len, 1);
return 1;
}
-#line 935 "ext/standard/var_unserializer.c"
+#line 952 "ext/standard/var_unserializer.c"
yy61:
yych = *++YYCURSOR;
if(yych <= '/') {
}
yy71:
++YYCURSOR;
-#line 534 "ext/standard/var_unserializer.re"
+#line 551 "ext/standard/var_unserializer.re"
{
*p = YYCURSOR;
INIT_PZVAL(*rval);
ZVAL_DOUBLE(*rval, zend_strtod((const char *)start + 2, NULL));
return 1;
}
-#line 1030 "ext/standard/var_unserializer.c"
+#line 1047 "ext/standard/var_unserializer.c"
yy73:
yych = *++YYCURSOR;
if(yych <= ',') {
yych = *++YYCURSOR;
if(yych != ';') goto yy19;
++YYCURSOR;
-#line 519 "ext/standard/var_unserializer.re"
+#line 536 "ext/standard/var_unserializer.re"
{
*p = YYCURSOR;
INIT_PZVAL(*rval);
return 1;
}
-#line 1104 "ext/standard/var_unserializer.c"
+#line 1121 "ext/standard/var_unserializer.c"
yy84:
yych = *++YYCURSOR;
if(yych == 'N') goto yy81;
if(yych <= '9') goto yy87;
if(yych != ';') goto yy19;
++YYCURSOR;
-#line 512 "ext/standard/var_unserializer.re"
+#line 529 "ext/standard/var_unserializer.re"
{
*p = YYCURSOR;
INIT_PZVAL(*rval);
ZVAL_LONG(*rval, parse_iv(start + 2));
return 1;
}
-#line 1138 "ext/standard/var_unserializer.c"
+#line 1155 "ext/standard/var_unserializer.c"
yy91:
yych = *++YYCURSOR;
if(yych <= '/') goto yy19;
yych = *++YYCURSOR;
if(yych != ';') goto yy19;
++YYCURSOR;
-#line 505 "ext/standard/var_unserializer.re"
+#line 522 "ext/standard/var_unserializer.re"
{
*p = YYCURSOR;
INIT_PZVAL(*rval);
ZVAL_BOOL(*rval, parse_iv(start + 2));
return 1;
}
-#line 1153 "ext/standard/var_unserializer.c"
+#line 1170 "ext/standard/var_unserializer.c"
yy95:
++YYCURSOR;
-#line 498 "ext/standard/var_unserializer.re"
+#line 515 "ext/standard/var_unserializer.re"
{
*p = YYCURSOR;
INIT_PZVAL(*rval);
ZVAL_NULL(*rval);
return 1;
}
-#line 1163 "ext/standard/var_unserializer.c"
+#line 1180 "ext/standard/var_unserializer.c"
yy97:
yych = *++YYCURSOR;
if(yych <= ',') {
if(yych <= '9') goto yy99;
if(yych != ';') goto yy19;
++YYCURSOR;
-#line 475 "ext/standard/var_unserializer.re"
+#line 492 "ext/standard/var_unserializer.re"
{
long id;
*rval = *rval_ref;
(*rval)->refcount++;
(*rval)->is_ref = 0;
-
+
return 1;
}
-#line 1209 "ext/standard/var_unserializer.c"
+#line 1226 "ext/standard/var_unserializer.c"
yy103:
yych = *++YYCURSOR;
if(yych <= ',') {
if(yych <= '9') goto yy105;
if(yych != ';') goto yy19;
++YYCURSOR;
-#line 454 "ext/standard/var_unserializer.re"
+#line 471 "ext/standard/var_unserializer.re"
{
long id;
*rval = *rval_ref;
(*rval)->refcount++;
(*rval)->is_ref = 1;
-
+
return 1;
}
-#line 1253 "ext/standard/var_unserializer.c"
+#line 1270 "ext/standard/var_unserializer.c"
}
}
-#line 778 "ext/standard/var_unserializer.re"
+#line 795 "ext/standard/var_unserializer.re"
return 0;