]> granicus.if.org Git - php/commitdiff
op_arrays may be optimized independetly and "script" might be NULL
authorDmitry Stogov <dmitry@zend.com>
Tue, 23 Aug 2016 10:17:53 +0000 (13:17 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 23 Aug 2016 10:17:53 +0000 (13:17 +0300)
ext/opcache/Optimizer/zend_inference.c
ext/opcache/Optimizer/zend_ssa.c

index 174528f2e1143cd3625bbb183b149febfdc2ef58..1e65a2577b7c25b047b8a69070cd3fc0ebf57ac7 100644 (file)
@@ -2350,7 +2350,7 @@ static inline zend_uchar get_compound_assign_op(zend_uchar opcode) {
 }
 
 static inline zend_class_entry *get_class_entry(const zend_script *script, zend_string *lcname) {
-       zend_class_entry *ce = zend_hash_find_ptr(&script->class_table, lcname);
+       zend_class_entry *ce = script ? zend_hash_find_ptr(&script->class_table, lcname) : NULL;
        if (ce) {
                return ce;
        }
@@ -2943,7 +2943,7 @@ static void zend_update_type_info(const zend_op_array *op_array,
                case ZEND_DECLARE_ANON_CLASS:
                case ZEND_DECLARE_ANON_INHERITED_CLASS:
                        UPDATE_SSA_TYPE(MAY_BE_CLASS, ssa_ops[i].result_def);
-                       if ((ce = zend_hash_find_ptr(&script->class_table, Z_STR_P(CRT_CONSTANT_EX(op_array, opline->op1, ssa->rt_constants)))) != NULL) {
+                       if (script && (ce = zend_hash_find_ptr(&script->class_table, Z_STR_P(CRT_CONSTANT_EX(op_array, opline->op1, ssa->rt_constants)))) != NULL) {
                                UPDATE_SSA_OBJ_TYPE(ce, 0, ssa_ops[i].result_def);
                        }
                        break;
index 3d09c7e5af5134b9e76acaba0daa99e7b3eb5025..b61a8dafa7ed017fee035df3d56658c3d7ba558b 100644 (file)
@@ -501,7 +501,7 @@ static void place_essa_pis(
                                   (opline-1)->op2_type == IS_CONST) {
                        int var = EX_VAR_TO_NUM((opline-1)->op1.var);
                        zend_string *lcname = Z_STR_P(CRT_CONSTANT((opline-1)->op2) + 1);
-                       zend_class_entry *ce = zend_hash_find_ptr(&script->class_table, lcname);
+                       zend_class_entry *ce = script ? zend_hash_find_ptr(&script->class_table, lcname) : NULL;
                        if (!ce) {
                                ce = zend_hash_find_ptr(CG(class_table), lcname);
                                if (!ce || ce->type != ZEND_INTERNAL_CLASS) {