Skip to content

Commit

Permalink
Fix bug #60169 Conjunction of ternary and list crashes PHP
Browse files Browse the repository at this point in the history
  • Loading branch information
laruence committed Nov 3, 2011
1 parent 5bf6eaf commit cae2f13
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 22 deletions.
2 changes: 2 additions & 0 deletions NEWS
Expand Up @@ -17,6 +17,8 @@ PHP NEWS
the data exceeds or is equal to 2048 bytes). (Pierre, Pascal Borreli)
. Fixed bug #60174 (Notice when array in method prototype error).
(Laruence)
. Fixed bug #60169 (Conjunction of ternary and list crashes PHP).
(Laruence)

- Oracle Database extension (OCI8):
. Increased maxium Oracle error message buffer length for new 11.2.0.3 size
Expand Down
2 changes: 0 additions & 2 deletions Zend/tests/bug60169.phpt
@@ -1,7 +1,5 @@
--TEST--
Bug #60169 (Conjunction of ternary and list crashes PHP)
--XFAIL--
See Bug #60169, doesn't fixed yet
--FILE--
<?php
error_reporting(0);
Expand Down
8 changes: 4 additions & 4 deletions Zend/zend_vm_def.h
Expand Up @@ -4689,12 +4689,12 @@ ZEND_VM_HANDLER(158, ZEND_JMP_SET_VAR, CONST|TMP|VAR|CV, ANY)
if (OP1_TYPE == IS_VAR || OP1_TYPE == IS_CV) {
Z_ADDREF_P(value);
EX_T(opline->result.var).var.ptr = value;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
} else {
ALLOC_ZVAL(ret);
INIT_PZVAL_COPY(ret, value);
EX_T(opline->result.var).var.ptr = ret;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
if (!IS_OP1_TMP_FREE()) {
zval_copy_ctor(EX_T(opline->result.var).var.ptr);
}
Expand Down Expand Up @@ -4741,12 +4741,12 @@ ZEND_VM_HANDLER(157, ZEND_QM_ASSIGN_VAR, CONST|TMP|VAR|CV, ANY)
if (OP1_TYPE == IS_VAR || OP1_TYPE == IS_CV) {
Z_ADDREF_P(value);
EX_T(opline->result.var).var.ptr = value;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
} else {
ALLOC_ZVAL(ret);
INIT_PZVAL_COPY(ret, value);
EX_T(opline->result.var).var.ptr = ret;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
if (!IS_OP1_TMP_FREE()) {
zval_copy_ctor(EX_T(opline->result.var).var.ptr);
}
Expand Down
32 changes: 16 additions & 16 deletions Zend/zend_vm_execute.h
Expand Up @@ -2863,12 +2863,12 @@ static int ZEND_FASTCALL ZEND_JMP_SET_VAR_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLE
if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
Z_ADDREF_P(value);
EX_T(opline->result.var).var.ptr = value;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
} else {
ALLOC_ZVAL(ret);
INIT_PZVAL_COPY(ret, value);
EX_T(opline->result.var).var.ptr = ret;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
if (!0) {
zval_copy_ctor(EX_T(opline->result.var).var.ptr);
}
Expand Down Expand Up @@ -2914,12 +2914,12 @@ static int ZEND_FASTCALL ZEND_QM_ASSIGN_VAR_SPEC_CONST_HANDLER(ZEND_OPCODE_HAND
if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
Z_ADDREF_P(value);
EX_T(opline->result.var).var.ptr = value;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
} else {
ALLOC_ZVAL(ret);
INIT_PZVAL_COPY(ret, value);
EX_T(opline->result.var).var.ptr = ret;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
if (!0) {
zval_copy_ctor(EX_T(opline->result.var).var.ptr);
}
Expand Down Expand Up @@ -7223,12 +7223,12 @@ static int ZEND_FASTCALL ZEND_JMP_SET_VAR_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_
if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
Z_ADDREF_P(value);
EX_T(opline->result.var).var.ptr = value;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
} else {
ALLOC_ZVAL(ret);
INIT_PZVAL_COPY(ret, value);
EX_T(opline->result.var).var.ptr = ret;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
if (!1) {
zval_copy_ctor(EX_T(opline->result.var).var.ptr);
}
Expand Down Expand Up @@ -7275,12 +7275,12 @@ static int ZEND_FASTCALL ZEND_QM_ASSIGN_VAR_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLE
if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
Z_ADDREF_P(value);
EX_T(opline->result.var).var.ptr = value;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
} else {
ALLOC_ZVAL(ret);
INIT_PZVAL_COPY(ret, value);
EX_T(opline->result.var).var.ptr = ret;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
if (!1) {
zval_copy_ctor(EX_T(opline->result.var).var.ptr);
}
Expand Down Expand Up @@ -11694,12 +11694,12 @@ static int ZEND_FASTCALL ZEND_JMP_SET_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_
if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
Z_ADDREF_P(value);
EX_T(opline->result.var).var.ptr = value;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
} else {
ALLOC_ZVAL(ret);
INIT_PZVAL_COPY(ret, value);
EX_T(opline->result.var).var.ptr = ret;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
if (!0) {
zval_copy_ctor(EX_T(opline->result.var).var.ptr);
}
Expand Down Expand Up @@ -11746,12 +11746,12 @@ static int ZEND_FASTCALL ZEND_QM_ASSIGN_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLE
if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
Z_ADDREF_P(value);
EX_T(opline->result.var).var.ptr = value;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
} else {
ALLOC_ZVAL(ret);
INIT_PZVAL_COPY(ret, value);
EX_T(opline->result.var).var.ptr = ret;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
if (!0) {
zval_copy_ctor(EX_T(opline->result.var).var.ptr);
}
Expand Down Expand Up @@ -27346,12 +27346,12 @@ static int ZEND_FASTCALL ZEND_JMP_SET_VAR_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_A
if (IS_CV == IS_VAR || IS_CV == IS_CV) {
Z_ADDREF_P(value);
EX_T(opline->result.var).var.ptr = value;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
} else {
ALLOC_ZVAL(ret);
INIT_PZVAL_COPY(ret, value);
EX_T(opline->result.var).var.ptr = ret;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
if (!0) {
zval_copy_ctor(EX_T(opline->result.var).var.ptr);
}
Expand Down Expand Up @@ -27397,12 +27397,12 @@ static int ZEND_FASTCALL ZEND_QM_ASSIGN_VAR_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER
if (IS_CV == IS_VAR || IS_CV == IS_CV) {
Z_ADDREF_P(value);
EX_T(opline->result.var).var.ptr = value;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
} else {
ALLOC_ZVAL(ret);
INIT_PZVAL_COPY(ret, value);
EX_T(opline->result.var).var.ptr = ret;
EX_T(opline->result.var).var.ptr_ptr = NULL;
EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
if (!0) {
zval_copy_ctor(EX_T(opline->result.var).var.ptr);
}
Expand Down

0 comments on commit cae2f13

Please sign in to comment.