From: Zeev Suraski Date: Tue, 7 Oct 2003 16:04:08 +0000 (+0000) Subject: Fix bug #17997 (Warning when switch & reference are combined) X-Git-Tag: RELEASE_1_3b3~99 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=146ba0e875540d291b7cb5557833a3403ae3b762;p=php Fix bug #17997 (Warning when switch & reference are combined) --- diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index f6fe304c1d..a8e20f8cca 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -194,8 +194,13 @@ static inline void zend_switch_free(zend_op *opline, temp_variable *Ts TSRMLS_DC switch (opline->op1.op_type) { case IS_VAR: if (!T(opline->op1.u.var).var.ptr_ptr) { - get_zval_ptr(&opline->op1, Ts, &EG(free_op1), BP_VAR_R); - FREE_OP(Ts, &opline->op1, EG(free_op1)); + temp_variable *T = &T(opline->op1.u.var); + + /* perform the equivalent of equivalent of a + * quick & silent get_zval_ptr, and FREE_OP + */ + PZVAL_UNLOCK(T->EA.data.str_offset.str); + zval_dtor(&T->tmp_var); } else { zval_ptr_dtor(&T(opline->op1.u.var).var.ptr); if (opline->extended_value) { /* foreach() free */