summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-05-03 12:11:07 +0300
committerDmitry Stogov <dmitry@zend.com>2018-05-03 12:11:07 +0300
commit3fe2e2a3720745c9e03dd062d3c75ea8789b27d3 (patch)
treeca5aa733d81f642a6a6a286d300d4aaad01aafbd
parentafc3f6e8d58248594f9ceb47a2c08fb488a794e6 (diff)
parent5b3e1ded356dc877aa246d28e71e69286b8829b5 (diff)
downloadphp-git-3fe2e2a3720745c9e03dd062d3c75ea8789b27d3.tar.gz
Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1: Fixed bug #76205 (PHP-FPM sporadic crash when running Infinitewp)
-rw-r--r--NEWS1
-rw-r--r--ext/opcache/zend_file_cache.c48
2 files changed, 27 insertions, 22 deletions
diff --git a/NEWS b/NEWS
index 1b46a77539..0a767d050c 100644
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,7 @@ PHP NEWS
(mgorny)
- Opcache:
+ . Fixed bug #76205 (PHP-FPM sporadic crash when running Infinitewp). (Dmitry)
. Fixed bug #76275 (Assertion failure in file cache when unserializing empty
try_catch_array). (Nikita)
. Fixed bug #76281 (Opcache causes incorrect "undefined variable" errors).
diff --git a/ext/opcache/zend_file_cache.c b/ext/opcache/zend_file_cache.c
index 861a10b3c4..6261e826d2 100644
--- a/ext/opcache/zend_file_cache.c
+++ b/ext/opcache/zend_file_cache.c
@@ -535,14 +535,13 @@ static void zend_file_cache_serialize_prop_info(zval *zv,
prop = Z_PTR_P(zv);
UNSERIALIZE_PTR(prop);
- if (prop->ce && !IS_SERIALIZED(prop->ce)) {
+ ZEND_ASSERT(prop->ce != NULL && prop->name != NULL);
+ if (!IS_SERIALIZED(prop->ce)) {
SERIALIZE_PTR(prop->ce);
- }
- if (prop->name && !IS_SERIALIZED(prop->name)) {
SERIALIZE_STR(prop->name);
- }
- if (prop->doc_comment && !IS_SERIALIZED(prop->doc_comment)) {
- SERIALIZE_STR(prop->doc_comment);
+ if (prop->doc_comment) {
+ SERIALIZE_STR(prop->doc_comment);
+ }
}
}
}
@@ -559,12 +558,15 @@ static void zend_file_cache_serialize_class_constant(zval *z
c = Z_PTR_P(zv);
UNSERIALIZE_PTR(c);
- zend_file_cache_serialize_zval(&c->value, script, info, buf);
- if (c->ce && !IS_SERIALIZED(c->ce)) {
+ ZEND_ASSERT(c->ce != NULL);
+ if (!IS_SERIALIZED(c->ce)) {
SERIALIZE_PTR(c->ce);
- }
- if (c->doc_comment && !IS_SERIALIZED(c->doc_comment)) {
- SERIALIZE_STR(c->doc_comment);
+
+ zend_file_cache_serialize_zval(&c->value, script, info, buf);
+
+ if (c->doc_comment) {
+ SERIALIZE_STR(c->doc_comment);
+ }
}
}
}
@@ -1159,14 +1161,13 @@ static void zend_file_cache_unserialize_prop_info(zval *zv,
UNSERIALIZE_PTR(Z_PTR_P(zv));
prop = Z_PTR_P(zv);
- if (prop->ce && !IS_UNSERIALIZED(prop->ce)) {
+ ZEND_ASSERT(prop->ce != NULL && prop->name != NULL);
+ if (!IS_UNSERIALIZED(prop->ce)) {
UNSERIALIZE_PTR(prop->ce);
- }
- if (prop->name && !IS_UNSERIALIZED(prop->name)) {
UNSERIALIZE_STR(prop->name);
- }
- if (prop->doc_comment && !IS_UNSERIALIZED(prop->doc_comment)) {
- UNSERIALIZE_STR(prop->doc_comment);
+ if (prop->doc_comment) {
+ UNSERIALIZE_STR(prop->doc_comment);
+ }
}
}
}
@@ -1181,12 +1182,15 @@ static void zend_file_cache_unserialize_class_constant(zval *
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)) {
+ ZEND_ASSERT(c->ce != NULL);
+ if (!IS_UNSERIALIZED(c->ce)) {
UNSERIALIZE_PTR(c->ce);
- }
- if (c->doc_comment && !IS_UNSERIALIZED(c->doc_comment)) {
- UNSERIALIZE_STR(c->doc_comment);
+
+ zend_file_cache_unserialize_zval(&c->value, script, buf);
+
+ if (c->doc_comment) {
+ UNSERIALIZE_STR(c->doc_comment);
+ }
}
}
}