]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.0'
authorDmitry Stogov <dmitry@zend.com>
Mon, 25 Apr 2016 11:15:06 +0000 (14:15 +0300)
committerDmitry Stogov <dmitry@zend.com>
Mon, 25 Apr 2016 11:15:06 +0000 (14:15 +0300)
* PHP-7.0:
  Fixed bug #72101 (crash on complex code)

1  2 
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 99494cff2ad8732824e02dc0cada2eff586b2172,5471356f5c0dec873356304b50fb05e49f827887..e1a87bbc9e58223977a1d0ad37cdf71f4892c794
@@@ -4555,8 -4589,9 +4555,8 @@@ ZEND_VM_HANDLER(119, ZEND_SEND_ARRAY, A
                        OBJ_RELEASE(Z_OBJ(EX(call)->This));
                }
                EX(call)->func = (zend_function*)&zend_pass_function;
 -              EX(call)->called_scope = NULL;
                Z_OBJ(EX(call)->This) = NULL;
-               ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)));
 -              ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
++              ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
        } else {
                uint32_t arg_num;
                HashTable *ht;
@@@ -4586,9 -4621,9 +4586,8 @@@ ZEND_VM_C_LABEL(send_array)
                                                        OBJ_RELEASE(Z_OBJ(EX(call)->This));
                                                }
                                                EX(call)->func = (zend_function*)&zend_pass_function;
 -                                              EX(call)->called_scope = NULL;
                                                Z_OBJ(EX(call)->This) = NULL;
-                                               ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)));
 -                                              ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
++                                              ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
                                                break;
                                        }
                                }
@@@ -4637,8 -4672,9 +4636,8 @@@ ZEND_VM_HANDLER(120, ZEND_SEND_USER, VA
                                }
                                ZVAL_UNDEF(param);
                                EX(call)->func = (zend_function*)&zend_pass_function;
 -                              EX(call)->called_scope = NULL;
                                Z_OBJ(EX(call)->This) = NULL;
-                               ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)));
 -                              ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
++                              ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
  
                                FREE_OP1();
                                ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
index 4aa47ba299aa15d61760ffc7e6bed18c0b240ea6,ba50ccd844e4440e57330f142d9275aaf096e538..bbf9213ab0e6087353f8ccc9b8a4a4e340656ef9
@@@ -1431,8 -1121,9 +1431,8 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                        OBJ_RELEASE(Z_OBJ(EX(call)->This));
                }
                EX(call)->func = (zend_function*)&zend_pass_function;
 -              EX(call)->called_scope = NULL;
                Z_OBJ(EX(call)->This) = NULL;
-               ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)));
 -              ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
++              ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
        } else {
                uint32_t arg_num;
                HashTable *ht;
@@@ -1462,9 -1153,9 +1462,8 @@@ send_array
                                                        OBJ_RELEASE(Z_OBJ(EX(call)->This));
                                                }
                                                EX(call)->func = (zend_function*)&zend_pass_function;
 -                                              EX(call)->called_scope = NULL;
                                                Z_OBJ(EX(call)->This) = NULL;
-                                               ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)));
 -                                              ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
++                                              ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
                                                break;
                                        }
                                }
@@@ -15652,8 -15348,9 +15651,8 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                                }
                                ZVAL_UNDEF(param);
                                EX(call)->func = (zend_function*)&zend_pass_function;
 -                              EX(call)->called_scope = NULL;
                                Z_OBJ(EX(call)->This) = NULL;
-                               ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)));
 -                              ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
++                              ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
  
                                zval_ptr_dtor_nogc(free_op1);
                                ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@@ -35254,8 -28956,9 +35253,8 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                                }
                                ZVAL_UNDEF(param);
                                EX(call)->func = (zend_function*)&zend_pass_function;
 -                              EX(call)->called_scope = NULL;
                                Z_OBJ(EX(call)->This) = NULL;
-                               ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)));
 -                              ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
++                              ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
  
                                ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
                        }