Jay Lawrence <[EMAIL PROTECTED]> said something to this effect on 12/11/2001:
> In my development I neglected to supply the Apache request
> object when I called Apache::Request->new( $r ). Actually $r
> was undef. It still works! I am just wondering if this is
> expected behaviour and if it will be supported going forward or
> was this just a fluke?

The Apache instance that gets passed to Apache::Request::new
apepars to not be required:

# From libapreq-0.33/Request/Request.xs:
    165 static ApacheRequest *sv_2apreq(SV *sv)
    166 {
    167     if (SvROK(sv) && sv_derived_from(sv, "Apache::Request")) {
    168         SV *obj = sv;
    169 
*snip*
    179         return (ApacheRequest *)SvIV((SV*)SvRV(obj));
    180     }
    181     else {
    182         return ApacheRequest_new(perl_request_rec(NULL));
    183     }
    184 }

perl_request_rec is defined in mod_perl/src/modules/perl/mod_perl.c
(from the mod_perl distribution); it sets the static IV
mp_request_rec to a request_rec:

# mod_perl/src/modules/perl/mod_perl.c:
     66 static IV mp_request_rec;
   1685 request_rec *perl_request_rec(request_rec *r)
   1686 {
   1687     if(r != NULL) {
   1688         mp_request_rec = (IV)r;
   1689         return NULL;
   1690     }
   1691     else
   1692         return (request_rec *)mp_request_rec;
   1693 }

So, at least with the current versions of mod_perl (1.26) and
libapreq (0.33), not passing Apache->request to
Apache::Request::new seems safe.

(darren)

-- 
Democracy is a form of government that substitutes election by the
incompetent many for appointment by the corrupt few.
    -- George Bernard Shaw

Reply via email to