@@ -101,10 +101,11 @@ static int zend_file_cache_flock(int fd, int type)
101
101
#define IS_SERIALIZED (ptr ) \
102
102
((char*)(ptr) <= (char*)script->size)
103
103
#define IS_UNSERIALIZED (ptr ) \
104
- ((char*)(ptr) >= (char*)script->mem && (char*)(ptr) < (char*)script->mem + script->size)
104
+ (((char*)(ptr) >= (char*)script->mem && (char*)(ptr) < (char*)script->mem + script->size) || \
105
+ IS_ACCEL_INTERNED(ptr))
105
106
#define SERIALIZE_PTR (ptr ) do { \
106
107
if (ptr) { \
107
- ZEND_ASSERT(IS_UNSERIALIZED(ptr) || IS_ACCEL_INTERNED(ptr) ); \
108
+ ZEND_ASSERT(IS_UNSERIALIZED(ptr)); \
108
109
(ptr) = (void*)((char*)(ptr) - (char*)script->mem); \
109
110
} \
110
111
} while (0)
@@ -951,12 +952,12 @@ static void zend_file_cache_unserialize_zval(zval *zv,
951
952
switch (Z_TYPE_P (zv )) {
952
953
case IS_STRING :
953
954
case IS_CONSTANT :
954
- if (IS_SERIALIZED (Z_STR_P (zv ))) {
955
+ if (! IS_UNSERIALIZED (Z_STR_P (zv ))) {
955
956
UNSERIALIZE_STR (Z_STR_P (zv ));
956
957
}
957
958
break ;
958
959
case IS_ARRAY :
959
- if (IS_SERIALIZED (Z_ARR_P (zv ))) {
960
+ if (! IS_UNSERIALIZED (Z_ARR_P (zv ))) {
960
961
HashTable * ht ;
961
962
962
963
UNSERIALIZE_PTR (Z_ARR_P (zv ));
@@ -966,7 +967,7 @@ static void zend_file_cache_unserialize_zval(zval *zv,
966
967
}
967
968
break ;
968
969
case IS_REFERENCE :
969
- if (IS_SERIALIZED (Z_REF_P (zv ))) {
970
+ if (! IS_UNSERIALIZED (Z_REF_P (zv ))) {
970
971
zend_reference * ref ;
971
972
972
973
UNSERIALIZE_PTR (Z_REF_P (zv ));
@@ -975,12 +976,12 @@ static void zend_file_cache_unserialize_zval(zval *zv,
975
976
}
976
977
break ;
977
978
case IS_CONSTANT_AST :
978
- if (IS_SERIALIZED (Z_AST_P (zv ))) {
979
+ if (! IS_UNSERIALIZED (Z_AST_P (zv ))) {
979
980
zend_ast_ref * ast ;
980
981
981
982
UNSERIALIZE_PTR (Z_AST_P (zv ));
982
983
ast = Z_AST_P (zv );
983
- if (IS_SERIALIZED (ast -> ast )) {
984
+ if (! IS_UNSERIALIZED (ast -> ast )) {
984
985
ast -> ast = zend_file_cache_unserialize_ast (ast -> ast , script , buf );
985
986
}
986
987
}
@@ -992,7 +993,7 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr
992
993
zend_persistent_script * script ,
993
994
void * buf )
994
995
{
995
- if (op_array -> static_variables && IS_SERIALIZED (op_array -> static_variables )) {
996
+ if (op_array -> static_variables && ! IS_UNSERIALIZED (op_array -> static_variables )) {
996
997
HashTable * ht ;
997
998
998
999
UNSERIALIZE_PTR (op_array -> static_variables );
@@ -1017,7 +1018,7 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr
1017
1018
return ;
1018
1019
}
1019
1020
1020
- if (op_array -> literals && IS_SERIALIZED (op_array -> literals )) {
1021
+ if (op_array -> literals && ! IS_UNSERIALIZED (op_array -> literals )) {
1021
1022
zval * p , * end ;
1022
1023
1023
1024
UNSERIALIZE_PTR (op_array -> literals );
@@ -1029,7 +1030,7 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr
1029
1030
}
1030
1031
}
1031
1032
1032
- if (IS_SERIALIZED (op_array -> opcodes )) {
1033
+ if (! IS_UNSERIALIZED (op_array -> opcodes )) {
1033
1034
zend_op * opline , * end ;
1034
1035
1035
1036
UNSERIALIZE_PTR (op_array -> opcodes );
@@ -1088,10 +1089,10 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr
1088
1089
end ++ ;
1089
1090
}
1090
1091
while (p < end ) {
1091
- if (IS_SERIALIZED (p -> name )) {
1092
+ if (! IS_UNSERIALIZED (p -> name )) {
1092
1093
UNSERIALIZE_STR (p -> name );
1093
1094
}
1094
- if (IS_SERIALIZED (p -> class_name )) {
1095
+ if (! IS_UNSERIALIZED (p -> class_name )) {
1095
1096
UNSERIALIZE_STR (p -> class_name );
1096
1097
}
1097
1098
p ++ ;
@@ -1105,7 +1106,7 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr
1105
1106
p = op_array -> vars ;
1106
1107
end = p + op_array -> last_var ;
1107
1108
while (p < end ) {
1108
- if (IS_SERIALIZED (* p )) {
1109
+ if (! IS_UNSERIALIZED (* p )) {
1109
1110
UNSERIALIZE_STR (* p );
1110
1111
}
1111
1112
p ++ ;
@@ -1137,19 +1138,19 @@ static void zend_file_cache_unserialize_prop_info(zval *zv,
1137
1138
zend_persistent_script * script ,
1138
1139
void * buf )
1139
1140
{
1140
- if (IS_SERIALIZED (Z_PTR_P (zv ))) {
1141
+ if (! IS_UNSERIALIZED (Z_PTR_P (zv ))) {
1141
1142
zend_property_info * prop ;
1142
1143
1143
1144
UNSERIALIZE_PTR (Z_PTR_P (zv ));
1144
1145
prop = Z_PTR_P (zv );
1145
1146
1146
- if (prop -> ce && IS_SERIALIZED (prop -> ce )) {
1147
+ if (prop -> ce && ! IS_UNSERIALIZED (prop -> ce )) {
1147
1148
UNSERIALIZE_PTR (prop -> ce );
1148
1149
}
1149
- if (prop -> name && IS_SERIALIZED (prop -> name )) {
1150
+ if (prop -> name && ! IS_UNSERIALIZED (prop -> name )) {
1150
1151
UNSERIALIZE_STR (prop -> name );
1151
1152
}
1152
- if (prop -> doc_comment && IS_SERIALIZED (prop -> doc_comment )) {
1153
+ if (prop -> doc_comment && ! IS_UNSERIALIZED (prop -> doc_comment )) {
1153
1154
UNSERIALIZE_STR (prop -> doc_comment );
1154
1155
}
1155
1156
}
@@ -1159,17 +1160,17 @@ static void zend_file_cache_unserialize_class_constant(zval *
1159
1160
zend_persistent_script * script ,
1160
1161
void * buf )
1161
1162
{
1162
- if (IS_SERIALIZED (Z_PTR_P (zv ))) {
1163
+ if (! IS_UNSERIALIZED (Z_PTR_P (zv ))) {
1163
1164
zend_class_constant * c ;
1164
1165
1165
1166
UNSERIALIZE_PTR (Z_PTR_P (zv ));
1166
1167
c = Z_PTR_P (zv );
1167
1168
1168
1169
zend_file_cache_unserialize_zval (& c -> value , script , buf );
1169
- if (c -> ce && IS_SERIALIZED (c -> ce )) {
1170
+ if (c -> ce && ! IS_UNSERIALIZED (c -> ce )) {
1170
1171
UNSERIALIZE_PTR (c -> ce );
1171
1172
}
1172
- if (c -> doc_comment && IS_SERIALIZED (c -> doc_comment )) {
1173
+ if (c -> doc_comment && ! IS_UNSERIALIZED (c -> doc_comment )) {
1173
1174
UNSERIALIZE_STR (c -> doc_comment );
1174
1175
}
1175
1176
}
0 commit comments