⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 var_unserializer.c.orig

📁 php-4.4.7学习linux时下载的源代码
💻 ORIG
📖 第 1 页 / 共 2 页
字号:
	if (len3 != len)	{		*p = YYCURSOR + len3 - len;		efree(class_name);		return 0;	}	if (zend_hash_find(CG(class_table), class_name, len + 1, (void **) &ce) != SUCCESS) {		if ((PG(unserialize_callback_func) == NULL) || (PG(unserialize_callback_func)[0] == '\0')) {			incomplete_class = 1;			ce = PHP_IC_ENTRY;		} else {			MAKE_STD_ZVAL(user_func);			ZVAL_STRING(user_func, PG(unserialize_callback_func), 1);			args[0] = &arg_func_name;			MAKE_STD_ZVAL(arg_func_name);			ZVAL_STRING(arg_func_name, class_name, 1);							if (call_user_function_ex(CG(function_table), NULL, user_func, &retval_ptr, 1, args, 0, NULL TSRMLS_CC) != SUCCESS) {				zend_error(E_WARNING, "'unserialize_callback_func' defined (%s) but not found", user_func->value.str.val);				incomplete_class = 1;				ce = PHP_IC_ENTRY;			} else {				if (zend_hash_find(CG(class_table), class_name, len + 1, (void **) &ce) != SUCCESS) {					zend_error(E_WARNING, "'unserialize_callback_func' (%s) hasn't defined the class it was called for", user_func->value.str.val);					incomplete_class = 1;					ce = PHP_IC_ENTRY;				} else {#ifdef ZEND_ENGINE_2					ce = *(zend_class_entry **)ce; /* Bad hack, TBF! */#endif					}			}		}	} else {#ifdef ZEND_ENGINE_2		ce = *(zend_class_entry **)ce; /* Bad hack, TBF! */#endif		}	*p = YYCURSOR;	elements = object_common1(UNSERIALIZE_PASSTHRU, ce);	if (incomplete_class) {		php_store_class_name(*rval, class_name, len2 TSRMLS_CC);	}	efree(class_name);	return object_common2(UNSERIALIZE_PASSTHRU, elements);}#line 568 "ext/standard/var_unserializer.c"yy24:		yych = *++YYCURSOR;		if(yych <= ',') {			if(yych != '+') goto yy17;		} else {			if(yych <= '-') goto yy25;			if(yych <= '/') goto yy17;			if(yych <= '9') goto yy26;			goto yy17;		}yy25:		yych = *++YYCURSOR;		if(yych <= '/') goto yy17;		if(yych >= ':') goto yy17;yy26:		++YYCURSOR;		if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);		yych = *YYCURSOR;		if(yych <= '/') goto yy17;		if(yych <= '9') goto yy26;		if(yych >= ';') goto yy17;		yych = *++YYCURSOR;		if(yych != '"') goto yy17;		++YYCURSOR;#line 487 "ext/standard/var_unserializer.re"		{	INIT_PZVAL(*rval);		return object_common2(UNSERIALIZE_PASSTHRU,			object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR));}#line 601 "ext/standard/var_unserializer.c"yy31:		yych = *++YYCURSOR;		if(yych == '+') goto yy32;		if(yych <= '/') goto yy17;		if(yych <= '9') goto yy33;		goto yy17;yy32:		yych = *++YYCURSOR;		if(yych <= '/') goto yy17;		if(yych >= ':') goto yy17;yy33:		++YYCURSOR;		if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);		yych = *YYCURSOR;		if(yych <= '/') goto yy17;		if(yych <= '9') goto yy33;		if(yych >= ';') goto yy17;		yych = *++YYCURSOR;		if(yych != '{') goto yy17;		++YYCURSOR;#line 461 "ext/standard/var_unserializer.re"		{	long elements = parse_iv(start + 2);	/* use iv() not uiv() in order to check data range */	*p = YYCURSOR;	if (elements < 0) {		return 0;	}	if (elements < 0) {		return 0;	}	INIT_PZVAL(*rval);	Z_TYPE_PP(rval) = IS_ARRAY;	ALLOC_HASHTABLE(Z_ARRVAL_PP(rval));	zend_hash_init(Z_ARRVAL_PP(rval), elements + 1, NULL, ZVAL_PTR_DTOR, 0);	if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_PP(rval), elements)) {		return 0;	}	return finish_nested_data(UNSERIALIZE_PASSTHRU);}#line 648 "ext/standard/var_unserializer.c"yy38:		yych = *++YYCURSOR;		if(yych == '+') goto yy39;		if(yych <= '/') goto yy17;		if(yych <= '9') goto yy40;		goto yy17;yy39:		yych = *++YYCURSOR;		if(yych <= '/') goto yy17;		if(yych >= ':') goto yy17;yy40:		++YYCURSOR;		if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);		yych = *YYCURSOR;		if(yych <= '/') goto yy17;		if(yych <= '9') goto yy40;		if(yych >= ';') goto yy17;		yych = *++YYCURSOR;		if(yych != '"') goto yy17;		++YYCURSOR;#line 433 "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 697 "ext/standard/var_unserializer.c"yy45:		yych = *++YYCURSOR;		if(yych <= '/') {			if(yych <= ',') {				if(yych == '+') goto yy49;				goto yy17;			} else {				if(yych <= '-') goto yy47;				if(yych <= '.') goto yy52;				goto yy17;			}		} else {			if(yych <= 'I') {				if(yych <= '9') goto yy50;				if(yych <= 'H') goto yy17;				goto yy48;			} else {				if(yych != 'N') goto yy17;			}		}		yych = *++YYCURSOR;		if(yych == 'A') goto yy68;		goto yy17;yy47:		yych = *++YYCURSOR;		if(yych <= '/') {			if(yych == '.') goto yy52;			goto yy17;		} else {			if(yych <= '9') goto yy50;			if(yych != 'I') goto yy17;		}yy48:		yych = *++YYCURSOR;		if(yych == 'N') goto yy64;		goto yy17;yy49:		yych = *++YYCURSOR;		if(yych == '.') goto yy52;		if(yych <= '/') goto yy17;		if(yych >= ':') goto yy17;yy50:		++YYCURSOR;		if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);		yych = *YYCURSOR;		if(yych <= ':') {			if(yych <= '.') {				if(yych <= '-') goto yy17;				goto yy62;			} else {				if(yych <= '/') goto yy17;				if(yych <= '9') goto yy50;				goto yy17;			}		} else {			if(yych <= 'E') {				if(yych <= ';') goto yy55;				if(yych <= 'D') goto yy17;				goto yy57;			} else {				if(yych == 'e') goto yy57;				goto yy17;			}		}yy52:		yych = *++YYCURSOR;		if(yych <= '/') goto yy17;		if(yych >= ':') goto yy17;yy53:		++YYCURSOR;		if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);		yych = *YYCURSOR;		if(yych <= ';') {			if(yych <= '/') goto yy17;			if(yych <= '9') goto yy53;			if(yych <= ':') goto yy17;		} else {			if(yych <= 'E') {				if(yych <= 'D') goto yy17;				goto yy57;			} else {				if(yych == 'e') goto yy57;				goto yy17;			}		}yy55:		++YYCURSOR;#line 426 "ext/standard/var_unserializer.re"		{	*p = YYCURSOR;	INIT_PZVAL(*rval);	ZVAL_DOUBLE(*rval, zend_strtod((const char *)start + 2, NULL));	return 1;}#line 792 "ext/standard/var_unserializer.c"yy57:		yych = *++YYCURSOR;		if(yych <= ',') {			if(yych != '+') goto yy17;		} else {			if(yych <= '-') goto yy58;			if(yych <= '/') goto yy17;			if(yych <= '9') goto yy59;			goto yy17;		}yy58:		yych = *++YYCURSOR;		if(yych <= ',') {			if(yych == '+') goto yy61;			goto yy17;		} else {			if(yych <= '-') goto yy61;			if(yych <= '/') goto yy17;			if(yych >= ':') goto yy17;		}yy59:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych <= '/') goto yy17;		if(yych <= '9') goto yy59;		if(yych == ';') goto yy55;		goto yy17;yy61:		yych = *++YYCURSOR;		if(yych <= '/') goto yy17;		if(yych <= '9') goto yy59;		goto yy17;yy62:		++YYCURSOR;		if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);		yych = *YYCURSOR;		if(yych <= ';') {			if(yych <= '/') goto yy17;			if(yych <= '9') goto yy62;			if(yych <= ':') goto yy17;			goto yy55;		} else {			if(yych <= 'E') {				if(yych <= 'D') goto yy17;				goto yy57;			} else {				if(yych == 'e') goto yy57;				goto yy17;			}		}yy64:		yych = *++YYCURSOR;		if(yych != 'F') goto yy17;yy65:		yych = *++YYCURSOR;		if(yych != ';') goto yy17;		++YYCURSOR;#line 411 "ext/standard/var_unserializer.re"		{	*p = YYCURSOR;	INIT_PZVAL(*rval);	if (!strncmp(start + 2, "NAN", 3)) {		ZVAL_DOUBLE(*rval, php_get_nan());	} else if (!strncmp(start + 2, "INF", 3)) {		ZVAL_DOUBLE(*rval, php_get_inf());	} else if (!strncmp(start + 2, "-INF", 4)) {		ZVAL_DOUBLE(*rval, -php_get_inf());	}	return 1;}#line 866 "ext/standard/var_unserializer.c"yy68:		yych = *++YYCURSOR;		if(yych == 'N') goto yy65;		goto yy17;yy69:		yych = *++YYCURSOR;		if(yych <= ',') {			if(yych != '+') goto yy17;		} else {			if(yych <= '-') goto yy70;			if(yych <= '/') goto yy17;			if(yych <= '9') goto yy71;			goto yy17;		}yy70:		yych = *++YYCURSOR;		if(yych <= '/') goto yy17;		if(yych >= ':') goto yy17;yy71:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych <= '/') goto yy17;		if(yych <= '9') goto yy71;		if(yych != ';') goto yy17;		++YYCURSOR;#line 404 "ext/standard/var_unserializer.re"		{	*p = YYCURSOR;	INIT_PZVAL(*rval);	ZVAL_LONG(*rval, parse_iv(start + 2));	return 1;}#line 900 "ext/standard/var_unserializer.c"yy75:		yych = *++YYCURSOR;		if(yych <= '/') goto yy17;		if(yych >= '2') goto yy17;		yych = *++YYCURSOR;		if(yych != ';') goto yy17;		++YYCURSOR;#line 397 "ext/standard/var_unserializer.re"		{	*p = YYCURSOR;	INIT_PZVAL(*rval);	ZVAL_BOOL(*rval, parse_iv(start + 2));	return 1;}#line 915 "ext/standard/var_unserializer.c"yy79:		++YYCURSOR;#line 390 "ext/standard/var_unserializer.re"		{	*p = YYCURSOR;	INIT_PZVAL(*rval);	ZVAL_NULL(*rval);	return 1;}#line 925 "ext/standard/var_unserializer.c"yy81:		yych = *++YYCURSOR;		if(yych <= ',') {			if(yych != '+') goto yy17;		} else {			if(yych <= '-') goto yy82;			if(yych <= '/') goto yy17;			if(yych <= '9') goto yy83;			goto yy17;		}yy82:		yych = *++YYCURSOR;		if(yych <= '/') goto yy17;		if(yych >= ':') goto yy17;yy83:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych <= '/') goto yy17;		if(yych <= '9') goto yy83;		if(yych != ';') goto yy17;		++YYCURSOR;#line 367 "ext/standard/var_unserializer.re"		{	long id; 	*p = YYCURSOR;	if (!var_hash) return 0;	id = parse_iv(start + 2) - 1;	if (id == -1 || var_access(var_hash, id, &rval_ref) != SUCCESS) {		return 0;	}		if (*rval == *rval_ref) return 0;	if ((*rval_ref)->refcount > 65500) {		return 0;	}	if (*rval != NULL) {	zval_ptr_dtor(rval);	}	*rval = *rval_ref;	(*rval)->refcount++;	(*rval)->is_ref = 0;		return 1;}#line 971 "ext/standard/var_unserializer.c"yy87:		yych = *++YYCURSOR;		if(yych <= ',') {			if(yych != '+') goto yy17;		} else {			if(yych <= '-') goto yy88;			if(yych <= '/') goto yy17;			if(yych <= '9') goto yy89;			goto yy17;		}yy88:		yych = *++YYCURSOR;		if(yych <= '/') goto yy17;		if(yych >= ':') goto yy17;yy89:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych <= '/') goto yy17;		if(yych <= '9') goto yy89;		if(yych != ';') goto yy17;		++YYCURSOR;#line 346 "ext/standard/var_unserializer.re"		{	long id; 	*p = YYCURSOR;	if (!var_hash) return 0;	id = parse_iv(start + 2) - 1;	if (id == -1 || var_access(var_hash, id, &rval_ref) != SUCCESS) {		return 0;	}	if ((*rval_ref)->refcount > 65500) {		return 0;	}	if (*rval != NULL) {	zval_ptr_dtor(rval);	}	*rval = *rval_ref;	(*rval)->refcount++;	(*rval)->is_ref = 1;		return 1;}#line 1015 "ext/standard/var_unserializer.c"	}}#line 592 "ext/standard/var_unserializer.re"	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -