summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/opcache/zend_file_cache.c41
1 files changed, 20 insertions, 21 deletions
diff --git a/ext/opcache/zend_file_cache.c b/ext/opcache/zend_file_cache.c
index 6f6b05c45c..42dfb7340f 100644
--- a/ext/opcache/zend_file_cache.c
+++ b/ext/opcache/zend_file_cache.c
@@ -101,11 +101,10 @@ static int zend_file_cache_flock(int fd, int type)
#define IS_SERIALIZED(ptr) \
((char*)(ptr) <= (char*)script->size)
#define IS_UNSERIALIZED(ptr) \
- (((char*)(ptr) >= (char*)script->mem && (char*)(ptr) < (char*)script->mem + script->size) || \
- IS_ACCEL_INTERNED(ptr))
+ ((char*)(ptr) >= (char*)script->mem && (char*)(ptr) < (char*)script->mem + script->size)
#define SERIALIZE_PTR(ptr) do { \
if (ptr) { \
- ZEND_ASSERT(IS_UNSERIALIZED(ptr)); \
+ ZEND_ASSERT(IS_UNSERIALIZED(ptr) || IS_ACCEL_INTERNED(ptr)); \
(ptr) = (void*)((char*)(ptr) - (char*)script->mem); \
} \
} while (0)
@@ -952,7 +951,7 @@ static void zend_file_cache_unserialize_ast(zend_ast *ast,
} else if (zend_ast_is_list(ast)) {
zend_ast_list *list = zend_ast_get_list(ast);
for (i = 0; i < list->children; i++) {
- if (list->child[i] && !IS_UNSERIALIZED(list->child[i])) {
+ if (list->child[i] && IS_SERIALIZED(list->child[i])) {
UNSERIALIZE_PTR(list->child[i]);
zend_file_cache_unserialize_ast(list->child[i], script, buf);
}
@@ -960,7 +959,7 @@ static void zend_file_cache_unserialize_ast(zend_ast *ast,
} else {
uint32_t children = zend_ast_get_num_children(ast);
for (i = 0; i < children; i++) {
- if (ast->child[i] && !IS_UNSERIALIZED(ast->child[i])) {
+ if (ast->child[i] && IS_SERIALIZED(ast->child[i])) {
UNSERIALIZE_PTR(ast->child[i]);
zend_file_cache_unserialize_ast(ast->child[i], script, buf);
}
@@ -974,12 +973,12 @@ static void zend_file_cache_unserialize_zval(zval *zv,
{
switch (Z_TYPE_P(zv)) {
case IS_STRING:
- if (!IS_UNSERIALIZED(Z_STR_P(zv))) {
+ if (IS_SERIALIZED(Z_STR_P(zv))) {
UNSERIALIZE_STR(Z_STR_P(zv));
}
break;
case IS_ARRAY:
- if (!IS_UNSERIALIZED(Z_ARR_P(zv))) {
+ if (IS_SERIALIZED(Z_ARR_P(zv))) {
HashTable *ht;
UNSERIALIZE_PTR(Z_ARR_P(zv));
@@ -989,7 +988,7 @@ static void zend_file_cache_unserialize_zval(zval *zv,
}
break;
case IS_REFERENCE:
- if (!IS_UNSERIALIZED(Z_REF_P(zv))) {
+ if (IS_SERIALIZED(Z_REF_P(zv))) {
zend_reference *ref;
UNSERIALIZE_PTR(Z_REF_P(zv));
@@ -998,7 +997,7 @@ static void zend_file_cache_unserialize_zval(zval *zv,
}
break;
case IS_CONSTANT_AST:
- if (!IS_UNSERIALIZED(Z_AST_P(zv))) {
+ if (IS_SERIALIZED(Z_AST_P(zv))) {
UNSERIALIZE_PTR(Z_AST_P(zv));
zend_file_cache_unserialize_ast(Z_ASTVAL_P(zv), script, buf);
}
@@ -1010,7 +1009,7 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr
zend_persistent_script *script,
void *buf)
{
- if (op_array->static_variables && !IS_UNSERIALIZED(op_array->static_variables)) {
+ if (op_array->static_variables && IS_SERIALIZED(op_array->static_variables)) {
HashTable *ht;
UNSERIALIZE_PTR(op_array->static_variables);
@@ -1035,7 +1034,7 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr
return;
}
- if (op_array->literals && !IS_UNSERIALIZED(op_array->literals)) {
+ if (op_array->literals && IS_SERIALIZED(op_array->literals)) {
zval *p, *end;
UNSERIALIZE_PTR(op_array->literals);
@@ -1047,7 +1046,7 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr
}
}
- if (!IS_UNSERIALIZED(op_array->opcodes)) {
+ if (IS_SERIALIZED(op_array->opcodes)) {
zend_op *opline, *end;
UNSERIALIZE_PTR(op_array->opcodes);
@@ -1120,7 +1119,7 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr
end++;
}
while (p < end) {
- if (!IS_UNSERIALIZED(p->name)) {
+ if (IS_SERIALIZED(p->name)) {
UNSERIALIZE_STR(p->name);
}
if (p->type & (Z_UL(1) << (sizeof(zend_type)*8-1))) { /* type is class */
@@ -1141,7 +1140,7 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr
p = op_array->vars;
end = p + op_array->last_var;
while (p < end) {
- if (!IS_UNSERIALIZED(*p)) {
+ if (IS_SERIALIZED(*p)) {
UNSERIALIZE_STR(*p);
}
p++;
@@ -1173,19 +1172,19 @@ static void zend_file_cache_unserialize_prop_info(zval *zv,
zend_persistent_script *script,
void *buf)
{
- if (!IS_UNSERIALIZED(Z_PTR_P(zv))) {
+ if (IS_SERIALIZED(Z_PTR_P(zv))) {
zend_property_info *prop;
UNSERIALIZE_PTR(Z_PTR_P(zv));
prop = Z_PTR_P(zv);
- if (prop->ce && !IS_UNSERIALIZED(prop->ce)) {
+ if (prop->ce && IS_SERIALIZED(prop->ce)) {
UNSERIALIZE_PTR(prop->ce);
}
- if (prop->name && !IS_UNSERIALIZED(prop->name)) {
+ if (prop->name && IS_SERIALIZED(prop->name)) {
UNSERIALIZE_STR(prop->name);
}
- if (prop->doc_comment && !IS_UNSERIALIZED(prop->doc_comment)) {
+ if (prop->doc_comment && IS_SERIALIZED(prop->doc_comment)) {
UNSERIALIZE_STR(prop->doc_comment);
}
}
@@ -1195,17 +1194,17 @@ static void zend_file_cache_unserialize_class_constant(zval *
zend_persistent_script *script,
void *buf)
{
- if (!IS_UNSERIALIZED(Z_PTR_P(zv))) {
+ if (IS_SERIALIZED(Z_PTR_P(zv))) {
zend_class_constant *c;
UNSERIALIZE_PTR(Z_PTR_P(zv));
c = Z_PTR_P(zv);
zend_file_cache_unserialize_zval(&c->value, script, buf);
- if (c->ce && !IS_UNSERIALIZED(c->ce)) {
+ if (c->ce && IS_SERIALIZED(c->ce)) {
UNSERIALIZE_PTR(c->ce);
}
- if (c->doc_comment && !IS_UNSERIALIZED(c->doc_comment)) {
+ if (c->doc_comment && IS_SERIALIZED(c->doc_comment)) {
UNSERIALIZE_STR(c->doc_comment);
}
}