Merge branch 'PHP-7.2'
authorDmitry Stogov <dmitry@zend.com>
Fri, 27 Apr 2018 21:28:01 +0000 (00:28 +0300)
committerDmitry Stogov <dmitry@zend.com>
Fri, 27 Apr 2018 21:28:01 +0000 (00:28 +0300)
* PHP-7.2:
  Fixed bug #76205 (PHP-FPM sporadic crash when running Infinitewp).

1  2 
ext/opcache/zend_file_cache.c

index 6f6b05c45c8216b95fce90696fe5da09fa4f2927,c3e99d26d505c9c2066aac6794111a5f2f8eaaf9..42dfb7340f738f351d1803293ae7410328d5f13c
@@@ -952,17 -938,15 +951,17 @@@ static void zend_file_cache_unserialize
        } 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]) {
 -                              list->child[i] = zend_file_cache_unserialize_ast(list->child[i], script, buf);
++                      if (list->child[i] && IS_SERIALIZED(list->child[i])) {
 +                              UNSERIALIZE_PTR(list->child[i]);
 +                              zend_file_cache_unserialize_ast(list->child[i], script, buf);
                        }
                }
        } 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]) {
 -                              ast->child[i] = zend_file_cache_unserialize_ast(ast->child[i], script, buf);
++                      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,7 -959,8 +973,7 @@@ static void zend_file_cache_unserialize
  {
        switch (Z_TYPE_P(zv)) {
                case IS_STRING:
-                       if (!IS_UNSERIALIZED(Z_STR_P(zv))) {
 -              case IS_CONSTANT:
+                       if (IS_SERIALIZED(Z_STR_P(zv))) {
                                UNSERIALIZE_STR(Z_STR_P(zv));
                        }
                        break;
                        }
                        break;
                case IS_CONSTANT_AST:
-                       if (!IS_UNSERIALIZED(Z_AST_P(zv))) {
+                       if (IS_SERIALIZED(Z_AST_P(zv))) {
 -                              zend_ast_ref *ast;
 -
                                UNSERIALIZE_PTR(Z_AST_P(zv));
 -                              ast = Z_AST_P(zv);
 -                              if (IS_SERIALIZED(ast->ast)) {
 -                                      ast->ast = zend_file_cache_unserialize_ast(ast->ast, script, buf);
 -                              }
 +                              zend_file_cache_unserialize_ast(Z_ASTVAL_P(zv), script, buf);
                        }
                        break;
        }