From: Dmitry Stogov Date: Sat, 28 Apr 2018 10:26:32 +0000 (+0300) Subject: Revert "Merge branch 'PHP-7.2'" X-Git-Tag: php-7.3.0alpha1~40 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1b305ecdcc95d2d0e0cc94814157edf90cade121;p=php Revert "Merge branch 'PHP-7.2'" This reverts commit f75b8a44cc078045b4e4a0a7dfe7e3ad3a8176e0, reversing changes made to aeb734910ae396d87989005edcc956e8fcb4253c. --- diff --git a/ext/opcache/zend_file_cache.c b/ext/opcache/zend_file_cache.c index 42dfb7340f..6f6b05c45c 100644 --- a/ext/opcache/zend_file_cache.c +++ b/ext/opcache/zend_file_cache.c @@ -101,10 +101,11 @@ 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) + (((char*)(ptr) >= (char*)script->mem && (char*)(ptr) < (char*)script->mem + script->size) || \ + IS_ACCEL_INTERNED(ptr)) #define SERIALIZE_PTR(ptr) do { \ if (ptr) { \ - ZEND_ASSERT(IS_UNSERIALIZED(ptr) || IS_ACCEL_INTERNED(ptr)); \ + ZEND_ASSERT(IS_UNSERIALIZED(ptr)); \ (ptr) = (void*)((char*)(ptr) - (char*)script->mem); \ } \ } while (0) @@ -951,7 +952,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_SERIALIZED(list->child[i])) { + if (list->child[i] && !IS_UNSERIALIZED(list->child[i])) { UNSERIALIZE_PTR(list->child[i]); zend_file_cache_unserialize_ast(list->child[i], script, buf); } @@ -959,7 +960,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_SERIALIZED(ast->child[i])) { + if (ast->child[i] && !IS_UNSERIALIZED(ast->child[i])) { UNSERIALIZE_PTR(ast->child[i]); zend_file_cache_unserialize_ast(ast->child[i], script, buf); } @@ -973,12 +974,12 @@ static void zend_file_cache_unserialize_zval(zval *zv, { switch (Z_TYPE_P(zv)) { case IS_STRING: - if (IS_SERIALIZED(Z_STR_P(zv))) { + if (!IS_UNSERIALIZED(Z_STR_P(zv))) { UNSERIALIZE_STR(Z_STR_P(zv)); } break; case IS_ARRAY: - if (IS_SERIALIZED(Z_ARR_P(zv))) { + if (!IS_UNSERIALIZED(Z_ARR_P(zv))) { HashTable *ht; UNSERIALIZE_PTR(Z_ARR_P(zv)); @@ -988,7 +989,7 @@ static void zend_file_cache_unserialize_zval(zval *zv, } break; case IS_REFERENCE: - if (IS_SERIALIZED(Z_REF_P(zv))) { + if (!IS_UNSERIALIZED(Z_REF_P(zv))) { zend_reference *ref; UNSERIALIZE_PTR(Z_REF_P(zv)); @@ -997,7 +998,7 @@ static void zend_file_cache_unserialize_zval(zval *zv, } break; case IS_CONSTANT_AST: - if (IS_SERIALIZED(Z_AST_P(zv))) { + if (!IS_UNSERIALIZED(Z_AST_P(zv))) { UNSERIALIZE_PTR(Z_AST_P(zv)); zend_file_cache_unserialize_ast(Z_ASTVAL_P(zv), script, buf); } @@ -1009,7 +1010,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_SERIALIZED(op_array->static_variables)) { + if (op_array->static_variables && !IS_UNSERIALIZED(op_array->static_variables)) { HashTable *ht; UNSERIALIZE_PTR(op_array->static_variables); @@ -1034,7 +1035,7 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr return; } - if (op_array->literals && IS_SERIALIZED(op_array->literals)) { + if (op_array->literals && !IS_UNSERIALIZED(op_array->literals)) { zval *p, *end; UNSERIALIZE_PTR(op_array->literals); @@ -1046,7 +1047,7 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr } } - if (IS_SERIALIZED(op_array->opcodes)) { + if (!IS_UNSERIALIZED(op_array->opcodes)) { zend_op *opline, *end; UNSERIALIZE_PTR(op_array->opcodes); @@ -1119,7 +1120,7 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr end++; } while (p < end) { - if (IS_SERIALIZED(p->name)) { + if (!IS_UNSERIALIZED(p->name)) { UNSERIALIZE_STR(p->name); } if (p->type & (Z_UL(1) << (sizeof(zend_type)*8-1))) { /* type is class */ @@ -1140,7 +1141,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_SERIALIZED(*p)) { + if (!IS_UNSERIALIZED(*p)) { UNSERIALIZE_STR(*p); } p++; @@ -1172,19 +1173,19 @@ static void zend_file_cache_unserialize_prop_info(zval *zv, zend_persistent_script *script, void *buf) { - if (IS_SERIALIZED(Z_PTR_P(zv))) { + if (!IS_UNSERIALIZED(Z_PTR_P(zv))) { zend_property_info *prop; UNSERIALIZE_PTR(Z_PTR_P(zv)); prop = Z_PTR_P(zv); - if (prop->ce && IS_SERIALIZED(prop->ce)) { + if (prop->ce && !IS_UNSERIALIZED(prop->ce)) { UNSERIALIZE_PTR(prop->ce); } - if (prop->name && IS_SERIALIZED(prop->name)) { + if (prop->name && !IS_UNSERIALIZED(prop->name)) { UNSERIALIZE_STR(prop->name); } - if (prop->doc_comment && IS_SERIALIZED(prop->doc_comment)) { + if (prop->doc_comment && !IS_UNSERIALIZED(prop->doc_comment)) { UNSERIALIZE_STR(prop->doc_comment); } } @@ -1194,17 +1195,17 @@ static void zend_file_cache_unserialize_class_constant(zval * zend_persistent_script *script, void *buf) { - if (IS_SERIALIZED(Z_PTR_P(zv))) { + if (!IS_UNSERIALIZED(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_SERIALIZED(c->ce)) { + if (c->ce && !IS_UNSERIALIZED(c->ce)) { UNSERIALIZE_PTR(c->ce); } - if (c->doc_comment && IS_SERIALIZED(c->doc_comment)) { + if (c->doc_comment && !IS_UNSERIALIZED(c->doc_comment)) { UNSERIALIZE_STR(c->doc_comment); } }