stas 2003/11/22 00:26:00
Modified: src/modules/perl modperl_util.c . Changes Log: fix slurp_filename to always open the file and not try to guess whether filename has been already opened, as there is no reliable way to accomplish that Revision Changes Path 1.57 +13 -5 modperl-2.0/src/modules/perl/modperl_util.c Index: modperl_util.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -u -r1.56 -r1.57 --- modperl_util.c 3 Nov 2003 09:29:49 -0000 1.56 +++ modperl_util.c 22 Nov 2003 08:26:00 -0000 1.57 @@ -706,12 +706,20 @@ size = r->finfo.size; sv = newSV(size); - file = r->finfo.filehand; - if (!file) { - rc = apr_file_open(&file, r->filename, APR_READ|APR_BINARY, - APR_OS_DEFAULT, r->pool); - SLURP_SUCCESS("opening"); + + if (!size) { + sv_setpvn(sv, "", 0); + return newRV_noinc(sv); } + + /* XXX: could have checked whether r->finfo.filehand is valid and + * save the apr_file_open call, but apache gives us no API to + * check whether filehand is valid. we can't test whether it's + * NULL or not, as it may contain garbagea + */ + rc = apr_file_open(&file, r->filename, APR_READ|APR_BINARY, + APR_OS_DEFAULT, r->pool); + SLURP_SUCCESS("opening"); rc = apr_file_read(file, SvPVX(sv), &size); SLURP_SUCCESS("reading"); 1.258 +4 -0 modperl-2.0/Changes Index: Changes =================================================================== RCS file: /home/cvs/modperl-2.0/Changes,v retrieving revision 1.257 retrieving revision 1.258 diff -u -u -r1.257 -r1.258 --- Changes 22 Nov 2003 07:42:12 -0000 1.257 +++ Changes 22 Nov 2003 08:26:00 -0000 1.258 @@ -12,6 +12,10 @@ =item 1.99_12-dev +fix slurp_filename to always open the file and not try to guess +whether filename has been already opened, as there is no reliable way +to accomplish that [Stas] + Apache->can_stack_handlers is now in Apache::compat (mp2 always can stack handlers) [Stas]