Here is the ZE1 revision. Ilia
On January 30, 2004 01:21 pm, you wrote: > On Fri, 30 Jan 2004, Ilia Alshanetsky wrote: > > Here is the final revision of the patch for the situation, if there are > > no last minute objections, it'll go in the CVS and we'll proceed with > > RC2. > > Uh, that is a ZE2 patch. We are talking about PHP 4.3.5 RC2 here. > > -Rasmus
Index: zend_execute.c =================================================================== RCS file: /repository/Zend/Attic/zend_execute.c,v retrieving revision 1.316.2.28 diff -u -3 -p -r1.316.2.28 zend_execute.c --- zend_execute.c 30 Jan 2004 02:22:31 -0000 1.316.2.28 +++ zend_execute.c 30 Jan 2004 18:37:21 -0000 @@ -2152,7 +2152,24 @@ send_by_ref: case ZEND_REQUIRE: new_op_array = compile_filename(EX(opline)->op2.u.constant.value.lval, inc_filename TSRMLS_CC); if (!new_op_array) { - zend_error(E_ERROR, "Parse error inside included file."); + /* small optimization for require() */ + if (EX(opline)->opcode == ZEND_REQUIRE) { + goto fatal_error; + } else { + /* This check is needed to ensure that included file has a parse error + * and we are no dealing with a non-existant include, which is not considered + * to be a fatal error. + */ + zend_file_handle file_handle = {0}; + int can_open = (zend_open(inc_filename->value.str.val, &file_handle) == SUCCESS && ZEND_IS_VALID_FILE_HANDLE(&file_handle)); + zend_file_handle_dtor(&file_handle); + + /* file open succeeded but still no op-array, likely parse error */ + if (can_open) { +fatal_error: + zend_error(E_ERROR, "Parse error inside included file."); + } + } } break; case ZEND_EVAL: {
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php