]> granicus.if.org Git - php/commitdiff
Revert "Merge branch 'PHP-7.2'"
authorDmitry Stogov <dmitry@zend.com>
Sat, 28 Apr 2018 10:26:32 +0000 (13:26 +0300)
committerDmitry Stogov <dmitry@zend.com>
Sat, 28 Apr 2018 10:26:32 +0000 (13:26 +0300)
This reverts commit f75b8a44cc078045b4e4a0a7dfe7e3ad3a8176e0, reversing
changes made to aeb734910ae396d87989005edcc956e8fcb4253c.

ext/opcache/zend_file_cache.c

index 42dfb7340f738f351d1803293ae7410328d5f13c..6f6b05c45c8216b95fce90696fe5da09fa4f2927 100644 (file)
@@ -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);
                }
        }