mirror of
https://github.com/php/php-src.git
synced 2026-04-08 08:33:06 +02:00
Fixed file-cache support (serialization/deserialization of zend_type)
This commit is contained in:
@@ -437,14 +437,14 @@ static void zend_file_cache_serialize_op_array(zend_op_array *op_arra
|
||||
SERIALIZE_STR(p->name);
|
||||
}
|
||||
if (ZEND_TYPE_IS_CLASS(p->type)) {
|
||||
zend_bool allow_null = ZEND_TYPE_ALLOW_NULL(p->type);
|
||||
zend_string *type_name = ZEND_TYPE_NAME(p->type);
|
||||
|
||||
if (!IS_SERIALIZED(type_name)) {
|
||||
zend_bool allow_null = ZEND_TYPE_ALLOW_NULL(p->type);
|
||||
|
||||
SERIALIZE_STR(type_name);
|
||||
p->type = ZEND_TYPE_ENCODE_CLASS(type_name, allow_null);
|
||||
}
|
||||
SERIALIZE_STR(type_name);
|
||||
p->type =
|
||||
(Z_UL(1) << (sizeof(zend_type)*8-1)) | /* type is class */
|
||||
(allow_null ? (Z_UL(1) << (sizeof(zend_type)*8-2)) : Z_UL(0)) | /* type allow null */
|
||||
(zend_type)type_name;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
@@ -1018,15 +1018,12 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr
|
||||
if (!IS_UNSERIALIZED(p->name)) {
|
||||
UNSERIALIZE_STR(p->name);
|
||||
}
|
||||
if (ZEND_TYPE_IS_CLASS(p->type)) {
|
||||
zend_string *type_name = ZEND_TYPE_NAME(p->type);
|
||||
if (p->type & (Z_UL(1) << (sizeof(zend_type)*8-1))) { /* type is class */
|
||||
zend_bool allow_null = (p->type & (Z_UL(1) << (sizeof(zend_type)*8-2))) != 0; /* type allow null */
|
||||
zend_string *type_name = (zend_string*)(p->type & ~(((Z_UL(1) << (sizeof(zend_type)*8-1))) | ((Z_UL(1) << (sizeof(zend_type)*8-2)))));
|
||||
|
||||
if (!IS_UNSERIALIZED(type_name)) {
|
||||
zend_bool allow_null = ZEND_TYPE_ALLOW_NULL(p->type);
|
||||
|
||||
UNSERIALIZE_STR(type_name);
|
||||
p->type = ZEND_TYPE_ENCODE_CLASS(type_name, allow_null);
|
||||
}
|
||||
UNSERIALIZE_STR(type_name);
|
||||
p->type = ZEND_TYPE_ENCODE_CLASS(type_name, allow_null);
|
||||
}
|
||||
p++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user