randyk      2004/06/25 08:29:25

  Modified:    lib/ModPerl WrapXS.pm
               src/modules/perl mod_perl.c mod_perl.h
               xs/APR/APR APR.xs
               xs/APR/Pool APR__Pool.h
  Log:
  Submitted by: Joe Schaefer <[EMAIL PROTECTED]>
  Reviewed by:  stas
  use APR_*_OPTIONAL_FN* to handle declaration of
  modperl_interp_unselect, so as to enable use both within
  and outside of mod_perl.so.
  
  Revision  Changes    Path
  1.77      +4 -0      modperl-2.0/lib/ModPerl/WrapXS.pm
  
  Index: WrapXS.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/lib/ModPerl/WrapXS.pm,v
  retrieving revision 1.76
  retrieving revision 1.77
  diff -u -r1.76 -r1.77
  --- WrapXS.pm 23 Jun 2004 03:30:15 -0000      1.76
  +++ WrapXS.pm 25 Jun 2004 15:29:25 -0000      1.77
  @@ -548,6 +548,10 @@
           }
       }
   
  +    if ($module eq 'APR::Pool') {
  +        print $fh "    modperl_opt_interp_unselect = 
APR_RETRIEVE_OPTIONAL_FN(modperl_interp_unselect);\n\n";
  +    }
  +
       close $fh;
   }
   
  
  
  
  1.215     +5 -0      modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.214
  retrieving revision 1.215
  diff -u -r1.214 -r1.215
  --- mod_perl.c        2 Jun 2004 21:35:58 -0000       1.214
  +++ mod_perl.c        25 Jun 2004 15:29:25 -0000      1.215
  @@ -715,6 +715,11 @@
   
   void modperl_register_hooks(apr_pool_t *p)
   {
  +
  +#ifdef USE_ITHREADS
  +    APR_REGISTER_OPTIONAL_FN(modperl_interp_unselect);
  +#endif
  +
       /* for <IfDefine MODPERL2> and Apache->define("MODPERL2") */
       *(char **)apr_array_push(ap_server_config_defines) =
           apr_pstrdup(p, "MODPERL2");
  
  
  
  1.67      +2 -0      modperl-2.0/src/modules/perl/mod_perl.h
  
  Index: mod_perl.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v
  retrieving revision 1.66
  retrieving revision 1.67
  diff -u -r1.66 -r1.67
  --- mod_perl.h        16 Jun 2004 03:55:47 -0000      1.66
  +++ mod_perl.h        25 Jun 2004 15:29:25 -0000      1.67
  @@ -128,4 +128,6 @@
   /* we need to hook a few internal things before APR_HOOK_REALLY_FIRST */
   #define MODPERL_HOOK_REALLY_REALLY_FIRST (-20)
   
  +APR_DECLARE_OPTIONAL_FN(apr_status_t,modperl_interp_unselect,(void *));
  +
   #endif /*  MOD_PERL_H */
  
  
  
  1.12      +0 -6      modperl-2.0/xs/APR/APR/APR.xs
  
  Index: APR.xs
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/APR/APR/APR.xs,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- APR.xs    16 Jun 2004 03:55:48 -0000      1.11
  +++ APR.xs    25 Jun 2004 15:29:25 -0000      1.12
  @@ -15,12 +15,6 @@
   
   #include "mod_perl.h"
   
  -/* XXX: provide the missing symbol for APR::Pool as a tmp workaround  */
  -#ifndef modperl_interp_unselect
  -apr_status_t modperl_interp_unselect(void *data);
  -apr_status_t modperl_interp_unselect(void *data) { return APR_SUCCESS; }
  -#endif
  -
   #ifdef MP_HAVE_APR_LIBS
   #   define APR_initialize apr_initialize
   #   define APR_terminate  apr_terminate
  
  
  
  1.15      +5 -2      modperl-2.0/xs/APR/Pool/APR__Pool.h
  
  Index: APR__Pool.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/APR/Pool/APR__Pool.h,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- APR__Pool.h       14 May 2004 07:40:31 -0000      1.14
  +++ APR__Pool.h       25 Jun 2004 15:29:25 -0000      1.15
  @@ -202,6 +202,9 @@
    * callback wrapper for Perl cleanup subroutines
    * @param data   internal storage
    */
  +
  +static APR_OPTIONAL_FN_TYPE(modperl_interp_unselect) *modperl_opt_interp_unselect;
  +
   static apr_status_t mpxs_cleanup_run(void *data)
   {
       int count;
  @@ -233,12 +236,12 @@
       }
   
   #ifdef USE_ITHREADS
  -    if (cdata->interp) {
  +    if (cdata->interp && modperl_opt_interp_unselect) {
           /* this will decrement the interp refcnt until
            * there are no more references, in which case
            * the interpreter will be putback into the mip
            */
  -        (void)modperl_interp_unselect(cdata->interp);
  +        (void)modperl_opt_interp_unselect(cdata->interp);
       }
   #endif
   
  
  
  

Reply via email to