Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_2) / zend_compile.c

From: Date: Tue, 06 Mar 2007 07:30:27 +0000
Subject: Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_2) / zend_compile.c
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-28264@lists.php.net to get a copy of this message
"Sara Golemon" <pollita@php.net> ??????:45877A06.6080104@php.net... > The primary reason I went this route rather than handling it in the parser > (I did consider it), was so that a clearer error message could be given > than "Unexpected T_STRING". If you'd rather, I'd be happy to move this > fix over there... > > -Sara > >> >> Not sure this is the right fix. It probably makes more sense to fix the >> parser itself and use r_variable instead of expr for the instanceof rule. >> Did you try and have problems doing so? I just took a quick look so it >> might >> be a bit more involved than that. >> >>> -----Original Message----- >>> From: Sara Golemon [mailto:pollita@php.net] Sent: Tuesday, December 12, >>> 2006 3:25 PM >>> To: zend-engine-cvs@lists.php.net >>> Subject: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_2) / zend_compile.c >>> pollita Tue Dec 12 23:25:23 2006 UTC >>> >>> Modified files: (Branch: PHP_5_2) >>> /ZendEngine2 zend_compile.c Log: >>> MFH: Bugfix# 39435: 'foo' instanceof bar gives invalid opcode error >>> >>> http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_compile.c?r1=1. >> 647.2.27.2.21&r2=1.647.2.27.2.22&diff_format=u >>> Index: ZendEngine2/zend_compile.c >>> diff -u ZendEngine2/zend_compile.c:1.647.2.27.2.21 >>> ZendEngine2/zend_compile.c:1.647.2.27.2.22 >>> --- ZendEngine2/zend_compile.c:1.647.2.27.2.21 Tue Dec 5 19:03:51 2006 >>> +++ ZendEngine2/zend_compile.c Tue Dec 12 23:25:23 2006 >>> @@ -17,7 +17,7 @@ >>> +------------------------------------------------------------- >>> ---------+ >>> */ >>> -/* $Id: zend_compile.c,v 1.647.2.27.2.21 2006/12/05 19:03:51 dmitry >>> Exp $ */ >>> +/* $Id: zend_compile.c,v 1.647.2.27.2.22 2006/12/12 23:25:23 pollita >>> +Exp $ */ >>> #include <zend_language_parser.h> >>> #include "zend.h" >>> @@ -3627,6 +3627,10 @@ >>> } >>> } >>> + if (expr->op_type == IS_CONST) { >>> + zend_error(E_COMPILE_ERROR, "instanceof expects an object instance, >>> constant given"); >>> + } >>> + >>> opline = get_next_op(CG(active_op_array) TSRMLS_CC); >>> opline->opcode = ZEND_INSTANCEOF; >>> opline->result.op_type = IS_TMP_VAR; >>>

« previous php.internals (#28264) next »