Hello Antony, I thought all functions we use here are ext/standard and always available. Or are we referencing non windows functions as well, if so, could we figure that out somehow and not provide these functions at all?
marcus Wednesday, July 2, 2008, 12:46:52 PM, you wrote: > tony2001 Wed Jul 2 10:46:52 2008 UTC > Modified files: > /php-src/ext/spl spl_directory.c > Log: > use zend_ascii_hash_find() and check its return value to prevent crash when > function not found > > > http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.156&r2=1.157&diff_format=u > Index: php-src/ext/spl/spl_directory.c > diff -u php-src/ext/spl/spl_directory.c:1.156 > php-src/ext/spl/spl_directory.c:1.157 > --- php-src/ext/spl/spl_directory.c:1.156 Wed Jun 18 10:05:14 2008 > +++ php-src/ext/spl/spl_directory.c Wed Jul 2 10:46:52 2008 > @@ -16,7 +16,7 @@ > > +----------------------------------------------------------------------+ > */ > > -/* $Id: spl_directory.c,v 1.156 2008/06/18 10:05:14 colder Exp $ */ > +/* $Id: spl_directory.c,v 1.157 2008/07/02 10:46:52 tony2001 Exp $ */ > > #ifdef HAVE_CONFIG_H > # include "config.h" > @@ -1870,7 +1870,12 @@ > #define FileFunctionCall(func_name, pass_num_args, arg2) /* {{{ */\ > { \ > zend_function *func_ptr; \ > - zend_hash_find(EG(function_table), #func_name, > sizeof(#func_name), (void **) &func_ptr); \ > + int ret; \ > + ret = zend_ascii_hash_find(EG(function_table), #func_name, > sizeof(#func_name), (void **) &func_ptr); \ > + if (ret != SUCCESS) { \ > + zend_throw_exception_ex(spl_ce_RuntimeException, 0 > TSRMLS_CC, "Internal error, function '%s' not found. Please report", > #func_name); \ > + return; \ > + } \ > spl_filesystem_file_call(intern, func_ptr, pass_num_args, > return_value, arg2 TSRMLS_CC); \ > } /* }}} */ > Best regards, Marcus -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php