Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:50471 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 7520 invoked from network); 24 Nov 2010 14:11:25 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 24 Nov 2010 14:11:25 -0000 Authentication-Results: pb1.pair.com smtp.mail=pierre.php@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=pierre.php@gmail.com; sender-id=pass; domainkeys=bad Received-SPF: pass (pb1.pair.com: domain gmail.com designates 74.125.83.170 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: pierre.php@gmail.com X-Host-Fingerprint: 74.125.83.170 mail-pv0-f170.google.com Received: from [74.125.83.170] ([74.125.83.170:33228] helo=mail-pv0-f170.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 85/C0-34456-C0D1DEC4 for ; Wed, 24 Nov 2010 09:11:24 -0500 Received: by pvf33 with SMTP id 33so2752551pvf.29 for ; Wed, 24 Nov 2010 06:11:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=s0DUve3K7aWzMautmYNTvltYpe6zff/QmnFvnNl9FjY=; b=SaoF5uiho0PedUQIAakedKw/xCUuAEHizUgIj2wnzQnnj87uakclcKLrKOJKxar7o8 x5NB9Ws5CedqmJVoostkWaj7tWBMwk7JiwddwKpaFS9VBvFF/64b1dzwJxI51M9vzxdA UohFkTFUE0a8HADh2nnSVFENkSRNaUgNE2zoI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=fGQXEZGW/JEUFlNcZ5cKByNBzMXRR5mq1qmU9igkoY2vj+Ad886bzpcW4pYARlEKn/ aa5VVui8s9mJlmaNgd4HPxpZzD+cr2KQMSAn3XOcfy9sGjXed058+CCV0IsT77aufWg0 i7KEHBf9OnRvQ3aWrHzxZsMzge5lIycnqKMcU= MIME-Version: 1.0 Received: by 10.223.72.1 with SMTP id k1mr8089254faj.111.1290607879191; Wed, 24 Nov 2010 06:11:19 -0800 (PST) Received: by 10.223.83.142 with HTTP; Wed, 24 Nov 2010 06:11:19 -0800 (PST) In-Reply-To: <4CED00F8.2060509@zend.com> References: <4CE5399A.5090304@zend.com> <4CED00F8.2060509@zend.com> Date: Wed, 24 Nov 2010 15:11:19 +0100 Message-ID: To: Dmitry Stogov Cc: PHP Internals , Derick Rethans , Rasmus Lerdorf , Zeev Suraski Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Subject: Re: [PHP-DEV] break/continue $var From: pierre.php@gmail.com (Pierre Joye) Hi Dmitry, From a BC point of view, the impact will be minimal. The only project I found relying on this syntax is XPath class [1]. Please add a note the upgrade guide as well in trunk, maybe in a BC break sections. [1] http://google.com/codesearch?hl=3Den&sa=3DN&q=3Dlang:php+break\s{1,}%28= \%24\w%29 Cheers, On Wed, Nov 24, 2010 at 1:11 PM, Dmitry Stogov wrote: > the proposed patch (backport from php6) is attached. > I think this feature is completely useless and it was agreed to remove it > about 5 years ago. > > Derick, can I commit the patch today? > > Thanks. Dmitry. > > Dmitry Stogov wrote: >> >> Hi, >> >> Previously we decided to remove "break/continue $var" syntax. >> I even implemented it in PHP6 brunch, however it wasn't backported into >> =A0trunk. Could I do it? >> >> Thanks. Dmitry. >> > > Index: Zend/zend_execute.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- Zend/zend_execute.c (revision 305710) > +++ Zend/zend_execute.c (working copy) > @@ -1362,21 +1362,12 @@ > =A0 =A0 =A0 =A0} > =A0} > > -static inline zend_brk_cont_element* zend_brk_cont(zval *nest_levels_zva= l, > int array_offset, const zend_op_array *op_array, const temp_variable *Ts > TSRMLS_DC) > +static inline zend_brk_cont_element* zend_brk_cont(int nest_levels, int > array_offset, const zend_op_array *op_array, const temp_variable *Ts > TSRMLS_DC) > =A0{ > =A0 =A0 =A0 =A0zval tmp; > - =A0 =A0 =A0 int nest_levels, original_nest_levels; > + =A0 =A0 =A0 int original_nest_levels =3D nest_levels; > =A0 =A0 =A0 =A0zend_brk_cont_element *jmp_to; > > - =A0 =A0 =A0 if (nest_levels_zval->type !=3D IS_LONG) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 tmp =3D *nest_levels_zval; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 zval_copy_ctor(&tmp); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 convert_to_long(&tmp); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 nest_levels =3D tmp.value.lval; > - =A0 =A0 =A0 } else { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 nest_levels =3D nest_levels_zval->value.lva= l; > - =A0 =A0 =A0 } > - =A0 =A0 =A0 original_nest_levels =3D nest_levels; > =A0 =A0 =A0 =A0do { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (array_offset=3D=3D-1) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0zend_error_noreturn(E_ERRO= R, "Cannot break/continue > %d level%s", original_nest_levels, (original_nest_levels =3D=3D 1) ? "" := "s"); > Index: Zend/zend_vm_execute.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- Zend/zend_vm_execute.h =A0 =A0 =A0(revision 305710) > +++ Zend/zend_vm_execute.h =A0 =A0 =A0(working copy) > @@ -1304,11 +1304,10 @@ > =A0static int ZEND_FASTCALL > =A0ZEND_BRK_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) > =A0{ > =A0 =A0 =A0 =A0USE_OPLINE > - > =A0 =A0 =A0 =A0zend_brk_cont_element *el; > > =A0 =A0 =A0 =A0SAVE_OPLINE(); > - =A0 =A0 =A0 el =3D zend_brk_cont(opline->op2.zv, opline->op1.opline_num= , > + =A0 =A0 =A0 el =3D zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.= opline_num, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 EX(op_array), EX_Ts()= TSRMLS_CC); > > =A0 =A0 =A0 =A0ZEND_VM_JMP(EX(op_array)->opcodes + el->brk); > @@ -1317,11 +1316,10 @@ > =A0static int ZEND_FASTCALL > =A0ZEND_CONT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) > =A0{ > =A0 =A0 =A0 =A0USE_OPLINE > - > =A0 =A0 =A0 =A0zend_brk_cont_element *el; > > =A0 =A0 =A0 =A0SAVE_OPLINE(); > - =A0 =A0 =A0 el =3D zend_brk_cont(opline->op2.zv, opline->op1.opline_num= , > + =A0 =A0 =A0 el =3D zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.= opline_num, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 EX(op_array), EX_Ts()= TSRMLS_CC); > > =A0 =A0 =A0 =A0ZEND_VM_JMP(EX(op_array)->opcodes + el->cont); > @@ -1334,7 +1332,7 @@ > =A0 =A0 =A0 =A0zend_brk_cont_element *el; > > =A0 =A0 =A0 =A0SAVE_OPLINE(); > - =A0 =A0 =A0 el =3D zend_brk_cont(opline->op2.zv, opline->extended_value= , > + =A0 =A0 =A0 el =3D zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->exte= nded_value, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 EX(op_array), EX_Ts()= TSRMLS_CC); > > =A0 =A0 =A0 =A0brk_opline =3D EX(op_array)->opcodes + el->brk; > @@ -1477,32 +1475,6 @@ > =A0} > > > -static int ZEND_FASTCALL > =A0ZEND_BRK_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) > -{ > - =A0 =A0 =A0 USE_OPLINE > - =A0 =A0 =A0 zend_free_op free_op2; > - =A0 =A0 =A0 zend_brk_cont_element *el; > - > - =A0 =A0 =A0 SAVE_OPLINE(); > - =A0 =A0 =A0 el =3D zend_brk_cont(_get_zval_ptr_tmp(opline->op2.var, EX_= Ts(), > &free_op2 TSRMLS_CC), opline->op1.opline_num, > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0EX(op_array), EX_Ts(= ) TSRMLS_CC); > - =A0 =A0 =A0 zval_dtor(free_op2.var); > - =A0 =A0 =A0 ZEND_VM_JMP(EX(op_array)->opcodes + el->brk); > -} > - > -static int ZEND_FASTCALL > =A0ZEND_CONT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) > -{ > - =A0 =A0 =A0 USE_OPLINE > - =A0 =A0 =A0 zend_free_op free_op2; > - =A0 =A0 =A0 zend_brk_cont_element *el; > - > - =A0 =A0 =A0 SAVE_OPLINE(); > - =A0 =A0 =A0 el =3D zend_brk_cont(_get_zval_ptr_tmp(opline->op2.var, EX_= Ts(), > &free_op2 TSRMLS_CC), opline->op1.opline_num, > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0EX(op_array), EX_Ts(= ) TSRMLS_CC); > - =A0 =A0 =A0 zval_dtor(free_op2.var); > - =A0 =A0 =A0 ZEND_VM_JMP(EX(op_array)->opcodes + el->cont); > -} > - > =A0static int ZEND_FASTCALL > =A0ZEND_FETCH_CLASS_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) > =A0{ > =A0 =A0 =A0 =A0USE_OPLINE > @@ -1599,32 +1571,6 @@ > =A0} > > > -static int ZEND_FASTCALL > =A0ZEND_BRK_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) > -{ > - =A0 =A0 =A0 USE_OPLINE > - =A0 =A0 =A0 zend_free_op free_op2; > - =A0 =A0 =A0 zend_brk_cont_element *el; > - > - =A0 =A0 =A0 SAVE_OPLINE(); > - =A0 =A0 =A0 el =3D zend_brk_cont(_get_zval_ptr_var(opline->op2.var, EX_= Ts(), > &free_op2 TSRMLS_CC), opline->op1.opline_num, > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0EX(op_array), EX_Ts(= ) TSRMLS_CC); > - =A0 =A0 =A0 if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; > - =A0 =A0 =A0 ZEND_VM_JMP(EX(op_array)->opcodes + el->brk); > -} > - > -static int ZEND_FASTCALL > =A0ZEND_CONT_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) > -{ > - =A0 =A0 =A0 USE_OPLINE > - =A0 =A0 =A0 zend_free_op free_op2; > - =A0 =A0 =A0 zend_brk_cont_element *el; > - > - =A0 =A0 =A0 SAVE_OPLINE(); > - =A0 =A0 =A0 el =3D zend_brk_cont(_get_zval_ptr_var(opline->op2.var, EX_= Ts(), > &free_op2 TSRMLS_CC), opline->op1.opline_num, > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0EX(op_array), EX_Ts(= ) TSRMLS_CC); > - =A0 =A0 =A0 if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; > - =A0 =A0 =A0 ZEND_VM_JMP(EX(op_array)->opcodes + el->cont); > -} > - > =A0static int ZEND_FASTCALL > =A0ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) > =A0{ > =A0 =A0 =A0 =A0USE_OPLINE > @@ -1754,32 +1700,6 @@ > =A0} > > > -static int ZEND_FASTCALL > =A0ZEND_BRK_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) > -{ > - =A0 =A0 =A0 USE_OPLINE > - > - =A0 =A0 =A0 zend_brk_cont_element *el; > - > - =A0 =A0 =A0 SAVE_OPLINE(); > - =A0 =A0 =A0 el =3D zend_brk_cont(_get_zval_ptr_cv_BP_VAR_R(EX_CVs(), > opline->op2.var TSRMLS_CC), opline->op1.opline_num, > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0EX(op_array), EX_Ts(= ) TSRMLS_CC); > - > - =A0 =A0 =A0 ZEND_VM_JMP(EX(op_array)->opcodes + el->brk); > -} > - > -static int ZEND_FASTCALL > =A0ZEND_CONT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) > -{ > - =A0 =A0 =A0 USE_OPLINE > - > - =A0 =A0 =A0 zend_brk_cont_element *el; > - > - =A0 =A0 =A0 SAVE_OPLINE(); > - =A0 =A0 =A0 el =3D zend_brk_cont(_get_zval_ptr_cv_BP_VAR_R(EX_CVs(), > opline->op2.var TSRMLS_CC), opline->op1.opline_num, > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0EX(op_array), EX_Ts(= ) TSRMLS_CC); > - > - =A0 =A0 =A0 ZEND_VM_JMP(EX(op_array)->opcodes + el->cont); > -} > - > =A0static int ZEND_FASTCALL > =A0ZEND_BW_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) > =A0{ > =A0 =A0 =A0 =A0USE_OPLINE > @@ -36791,55 +36711,55 @@ > =A0 =A0 =A0 =A0ZEND_NULL_HANDLER, > =A0 =A0 =A0 =A0ZEND_NULL_HANDLER, > =A0 =A0 =A0 =A0ZEND_BRK_SPEC_CONST_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_TMP_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_VAR_HANDLER, > =A0 =A0 =A0 =A0ZEND_NULL_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_CV_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > =A0 =A0 =A0 =A0ZEND_BRK_SPEC_CONST_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_TMP_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_VAR_HANDLER, > =A0 =A0 =A0 =A0ZEND_NULL_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_CV_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > =A0 =A0 =A0 =A0ZEND_BRK_SPEC_CONST_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_TMP_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_VAR_HANDLER, > =A0 =A0 =A0 =A0ZEND_NULL_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_CV_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > =A0 =A0 =A0 =A0ZEND_BRK_SPEC_CONST_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_TMP_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_VAR_HANDLER, > =A0 =A0 =A0 =A0ZEND_NULL_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_CV_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > =A0 =A0 =A0 =A0ZEND_BRK_SPEC_CONST_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_TMP_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_VAR_HANDLER, > =A0 =A0 =A0 =A0ZEND_NULL_HANDLER, > - =A0 =A0 =A0 ZEND_BRK_SPEC_CV_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > =A0 =A0 =A0 =A0ZEND_CONT_SPEC_CONST_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_TMP_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_VAR_HANDLER, > =A0 =A0 =A0 =A0ZEND_NULL_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_CV_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > =A0 =A0 =A0 =A0ZEND_CONT_SPEC_CONST_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_TMP_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_VAR_HANDLER, > =A0 =A0 =A0 =A0ZEND_NULL_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_CV_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > =A0 =A0 =A0 =A0ZEND_CONT_SPEC_CONST_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_TMP_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_VAR_HANDLER, > =A0 =A0 =A0 =A0ZEND_NULL_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_CV_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > =A0 =A0 =A0 =A0ZEND_CONT_SPEC_CONST_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_TMP_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_VAR_HANDLER, > =A0 =A0 =A0 =A0ZEND_NULL_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_CV_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > =A0 =A0 =A0 =A0ZEND_CONT_SPEC_CONST_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_TMP_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_VAR_HANDLER, > =A0 =A0 =A0 =A0ZEND_NULL_HANDLER, > - =A0 =A0 =A0 ZEND_CONT_SPEC_CV_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > + =A0 =A0 =A0 ZEND_NULL_HANDLER, > =A0 =A0 =A0 =A0ZEND_BOOL_SPEC_CONST_HANDLER, > =A0 =A0 =A0 =A0ZEND_BOOL_SPEC_CONST_HANDLER, > =A0 =A0 =A0 =A0ZEND_BOOL_SPEC_CONST_HANDLER, > Index: Zend/zend_compile.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- Zend/zend_compile.c (revision 305711) > +++ Zend/zend_compile.c (working copy) > @@ -4302,6 +4302,11 @@ > =A0 =A0 =A0 =A0opline->op1.opline_num =3D CG(context).current_brk_cont; > =A0 =A0 =A0 =A0SET_UNUSED(opline->op1); > =A0 =A0 =A0 =A0if (expr) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (expr->op_type !=3D IS_CONST) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 zend_error(E_COMPILE_ERROR,= "'%s' operator with > non-constant operand is no longer supported", op =3D=3D ZEND_BRK ? "break= " : > "continue"); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 } else if (Z_TYPE(expr->u.constant) !=3D IS= _LONG || > Z_LVAL(expr->u.constant) < 1) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 zend_error(E_COMPILE_ERROR,= "'%s' operator accepts > only positive numbers", op =3D=3D ZEND_BRK ? "break" : "continue"); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0SET_NODE(opline->op2, expr); > =A0 =A0 =A0 =A0} else { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0LITERAL_LONG(opline->op2, 1); > Index: Zend/zend_vm_def.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- Zend/zend_vm_def.h =A0(revision 305710) > +++ Zend/zend_vm_def.h =A0(working copy) > @@ -3171,27 +3171,25 @@ > =A0 =A0 =A0 =A0ZEND_VM_NEXT_OPCODE(); > =A0} > > -ZEND_VM_HANDLER(50, ZEND_BRK, ANY, CONST|TMP|VAR|CV) > +ZEND_VM_HANDLER(50, ZEND_BRK, ANY, CONST) > =A0{ > =A0 =A0 =A0 =A0USE_OPLINE > - =A0 =A0 =A0 zend_free_op free_op2; > =A0 =A0 =A0 =A0zend_brk_cont_element *el; > > =A0 =A0 =A0 =A0SAVE_OPLINE(); > - =A0 =A0 =A0 el =3D zend_brk_cont(GET_OP2_ZVAL_PTR(BP_VAR_R), > opline->op1.opline_num, > + =A0 =A0 =A0 el =3D zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.= opline_num, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 EX(op_array), EX_Ts()= TSRMLS_CC); > =A0 =A0 =A0 =A0FREE_OP2(); > =A0 =A0 =A0 =A0ZEND_VM_JMP(EX(op_array)->opcodes + el->brk); > =A0} > > -ZEND_VM_HANDLER(51, ZEND_CONT, ANY, CONST|TMP|VAR|CV) > +ZEND_VM_HANDLER(51, ZEND_CONT, ANY, CONST) > =A0{ > =A0 =A0 =A0 =A0USE_OPLINE > - =A0 =A0 =A0 zend_free_op free_op2; > =A0 =A0 =A0 =A0zend_brk_cont_element *el; > > =A0 =A0 =A0 =A0SAVE_OPLINE(); > - =A0 =A0 =A0 el =3D zend_brk_cont(GET_OP2_ZVAL_PTR(BP_VAR_R), > opline->op1.opline_num, > + =A0 =A0 =A0 el =3D zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.= opline_num, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 EX(op_array), EX_Ts()= TSRMLS_CC); > =A0 =A0 =A0 =A0FREE_OP2(); > =A0 =A0 =A0 =A0ZEND_VM_JMP(EX(op_array)->opcodes + el->cont); > @@ -3204,7 +3202,7 @@ > =A0 =A0 =A0 =A0zend_brk_cont_element *el; > > =A0 =A0 =A0 =A0SAVE_OPLINE(); > - =A0 =A0 =A0 el =3D zend_brk_cont(opline->op2.zv, opline->extended_value= , > + =A0 =A0 =A0 el =3D zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->exte= nded_value, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 EX(op_array), EX_Ts()= TSRMLS_CC); > > =A0 =A0 =A0 =A0brk_opline =3D EX(op_array)->opcodes + el->brk; > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > --=20 Pierre @pierrejoye | http://blog.thepimp.net | http://www.libgd.org