dougm 01/06/20 16:59:37 Modified: xs/Apache/RequestIO Apache__RequestIO.h Log: fix $r->read not to mess with r->read_length fix $r->read and $r->get_client_block to set the buffer to "" rather than undef, like CORE::read() does these changes fix the modules/cgiupload test Revision Changes Path 1.12 +6 -9 modperl-2.0/xs/Apache/RequestIO/Apache__RequestIO.h Index: Apache__RequestIO.h =================================================================== RCS file: /home/cvs/modperl-2.0/xs/Apache/RequestIO/Apache__RequestIO.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- Apache__RequestIO.h 2001/05/07 01:31:26 1.11 +++ Apache__RequestIO.h 2001/06/20 23:59:37 1.12 @@ -95,7 +95,7 @@ SvTAINTED_on(buffer); } else { - sv_setsv(buffer, &PL_sv_undef); /* XXX */ + sv_setpvn(buffer, "", 0); } return nrd; @@ -109,10 +109,11 @@ int offset) { dTHX; /*XXX*/ - long nrd = 0, old_read_length; + long nrd = 0; int rc; if (!r->read_length) { + /* only do this once per-request */ if ((rc = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR)) != OK) { ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, r->server, @@ -121,22 +122,18 @@ } } - old_read_length = r->read_length; - r->read_length = 0; - - if (ap_should_client_block(r)) { + if (r->read_length || ap_should_client_block(r)) { + /* ap_should_client_block() will return 0 if r->read_length */ mpxs_sv_grow(buffer, bufsiz+offset); nrd = ap_get_client_block(r, SvPVX(buffer)+offset, bufsiz); } - r->read_length += old_read_length; - if (nrd > 0) { mpxs_sv_cur_set(buffer, nrd+offset); SvTAINTED_on(buffer); } else { - sv_setsv(buffer, &PL_sv_undef); + sv_setpvn(buffer, "", 0); } return nrd;