com php-src: Fixed hash val calculating: ext/opcache/Optimizer/ zend_optimizer.c

[email protected] (Xinchen Hui)
Newsgroups php.cvs
Message-ID <[email protected]>
Commit:    8cd870a9e055bfd748ea501aebe8d96650effc04
Author:    Xinchen Hui <[email protected]>         Wed, 19 Apr 2017 17:15:34 +0800
Parents:   b78b15e88022b70ce6810f8b8dd1e42c2dac44b3
Branches:  master

Link:       http://git.php.net/?p=php-src.git;a=commitdiff;h=8cd870a9e055bfd748ea501aebe8d96650effc04

Log:
Fixed hash val calculating

Changed paths:
  M  ext/opcache/Optimizer/zend_optimizer.c


Diff:
diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c
index c8524f6..750fcb6 100644
--- a/ext/opcache/Optimizer/zend_optimizer.c
+++ b/ext/opcache/Optimizer/zend_optimizer.c
@@ -422,10 +422,6 @@ int zend_optimizer_replace_by_const(zend_op_array *op_array,
 				case ZEND_FETCH_LIST: {
 					zend_op *m = opline;
 
-					if (Z_TYPE_P(val) == IS_STRING) {
-						zend_string_hash_val(Z_STR_P(val));
-					}
-
 					do {
 						if (m->opcode == ZEND_FETCH_LIST &&
 							ZEND_OP1_TYPE(m) == type &&
@@ -433,6 +429,9 @@ int zend_optimizer_replace_by_const(zend_op_array *op_array,
 							zval v;
 							ZVAL_COPY_VALUE(&v, val);
 							zval_copy_ctor(&v);
+							if (Z_TYPE(v) == IS_STRING) {
+								zend_string_hash_val(Z_STR(v));
+							}
 							ZEND_OP1(m).constant = zend_optimizer_add_literal(op_array, &v);
 							ZEND_OP1_TYPE(m) = IS_CONST;
 						}
@@ -476,10 +475,6 @@ int zend_optimizer_replace_by_const(zend_op_array *op_array,
 						n = op_array->opcodes + op_array->last;
 					}
 
-					if (Z_TYPE_P(val) == IS_STRING) {
-						zend_string_hash_val(Z_STR_P(val));
-					}
-
 					while (m < n) {
 						if (ZEND_OP1_TYPE(m) == type &&
 								ZEND_OP1(m).var == var) {
@@ -489,6 +484,9 @@ int zend_optimizer_replace_by_const(zend_op_array *op_array,
 								zval v;
 								ZVAL_COPY_VALUE(&v, val);
 								zval_copy_ctor(&v);
+								if (Z_TYPE(v) == IS_STRING) {
+									zend_string_hash_val(Z_STR(v));
+								}
 								ZEND_OP1(m).constant = zend_optimizer_add_literal(op_array, &v);
 								ZEND_OP1_TYPE(m) = IS_CONST;
 							} else if (m->opcode == ZEND_FREE) {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.