com php-src: On Windows PHP may be restarted with different set of DSO extensions without SHM reset. This may make optimisation for entities from DSO
extensions inconsistent.: ext/opcache/Optimizer/pass1_ 5.c
| From: | Dmitry Stogov | Date: | Mon, 29 Jun 2015 15:01:01 +0000 |
| Subject: | com php-src: On Windows PHP may be restarted with different set of DSO extensions without SHM reset. This may make optimisation for entities from DSO extensions inconsistent.: ext/opcache/Optimizer/pass1_ 5.c |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-87627@lists.php.net to get a copy of this message | ||
Commit: dc588997e202b5a645052bfb21098cc571693569
Author: Dmitry Stogov <dmitry@zend.com> Mon, 29 Jun 2015 17:45:56 +0300
Parents: edb3ab2a2a70ea2c9616b339382c977dbdf1a2ec
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=dc588997e202b5a645052bfb21098cc571693569
Log:
On Windows PHP may be restarted with different set of DSO extensions without SHM reset.
This may make optimisation for entities from DSO extensions inconsistent.
Changed paths:
M ext/opcache/Optimizer/pass1_5.c
Diff:
diff --git a/ext/opcache/Optimizer/pass1_5.c b/ext/opcache/Optimizer/pass1_5.c
index ec6cf15..2ae6b79 100644
--- a/ext/opcache/Optimizer/pass1_5.c
+++ b/ext/opcache/Optimizer/pass1_5.c
@@ -444,9 +444,13 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx)
zend_string *lc_name = zend_string_tolower(
Z_STR(ZEND_OP1_LITERAL(send1_opline)));
- if ((func = zend_hash_find_ptr(EG(function_table), lc_name)) != NULL &&
- func->type == ZEND_INTERNAL_FUNCTION &&
- func->module->type == MODULE_PERSISTENT) {
+ if ((func = zend_hash_find_ptr(EG(function_table), lc_name)) != NULL
+ && func->type == ZEND_INTERNAL_FUNCTION
+ && func->module->type == MODULE_PERSISTENT
+#ifdef ZEND_WIN32
+ && func->module->handle == NULL
+#endif
+ ) {
zval t;
if (Z_STRLEN(ZEND_OP2_LITERAL(init_opline)) == sizeof("is_callable") - 1 ||
func->handler != ZEND_FN(display_disabled_function)) {
@@ -483,7 +487,11 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx)
ZVAL_FALSE(&t);
}
} else {
- if (m->type == MODULE_PERSISTENT) {
+ if (m->type == MODULE_PERSISTENT
+#ifdef ZEND_WIN32
+ && m->handle == NULL
+#endif
+ ) {
ZVAL_TRUE(&t);
} else {
break;