diff options
| author | Dmitry Stogov <dmitry@zend.com> | 2014-03-05 17:57:21 +0400 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@zend.com> | 2014-03-05 17:57:21 +0400 |
| commit | c5af715f2b10c41ad33bbf741b3082c638c0b260 (patch) | |
| tree | 072431c8dfbef40818453d5304336a34121d278d | |
| parent | 28aacbfe1540b3760569ce76399a44c4cdbb8139 (diff) | |
| download | php-git-c5af715f2b10c41ad33bbf741b3082c638c0b260.tar.gz | |
Fixed hidden property handling
| -rw-r--r-- | Zend/zend_vm_def.h | 4 | ||||
| -rw-r--r-- | Zend/zend_vm_execute.h | 48 |
2 files changed, 52 insertions, 0 deletions
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 2a89da2a5e..70e4b60cb6 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -1422,6 +1422,10 @@ ZEND_VM_HANDLER(85, ZEND_FETCH_OBJ_W, VAR|UNUSED|CV, CONST|TMP|VAR|CV) if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 6ec59ac6c7..48cb88ecfa 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -14760,6 +14760,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -17055,6 +17059,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAND if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -19247,6 +19255,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAND if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -22627,6 +22639,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDL if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -24339,6 +24355,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -25716,6 +25736,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_H if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -27009,6 +27033,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_H if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -28709,6 +28737,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HA if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -31823,6 +31855,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -33900,6 +33936,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDL if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -35967,6 +36007,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDL if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -39087,6 +39131,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLE if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { |
