dougm       01/12/05 11:00:29

  Modified:    src/modules/perl modperl_global.c
               xs/Apache/RequestUtil Apache__RequestUtil.h
  Log:
  various bug fixes in the tls code:
  - reset global request_rec to NULL when request is over
  - proper deferencing in modperl_tls_reset()
  - proper intialization in modperl_tls_reset_cleanup()
  
  Revision  Changes    Path
  1.4       +10 -3     modperl-2.0/src/modules/perl/modperl_global.c
  
  Index: modperl_global.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_global.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- modperl_global.c  2001/05/04 05:49:19     1.3
  +++ modperl_global.c  2001/12/05 19:00:29     1.4
  @@ -25,6 +25,9 @@
           /* reset after subrequests */
           modperl_tls_reset_cleanup_request_rec(r->pool, r->main);
       }
  +    else {
  +        modperl_tls_reset_cleanup_request_rec(r->pool, NULL);
  +    }
   }
   
   void modperl_global_request_obj_set(pTHX_ SV *svr)
  @@ -181,15 +184,19 @@
   
   static apr_status_t modperl_tls_reset(void *data)
   {
  -    modperl_tls_cleanup_data_t *cdata;
  -    return modperl_tls_set(cdata->key, data);
  +    modperl_tls_cleanup_data_t *cdata = 
  +        (modperl_tls_cleanup_data_t *)data;
  +    return modperl_tls_set(cdata->key, cdata->data);
   }
   
   void modperl_tls_reset_cleanup(apr_pool_t *p, modperl_tls_t *key,
                                  void *data)
   {
       modperl_tls_cleanup_data_t *cdata =
  -        (modperl_tls_cleanup_data_t *)apr_pcalloc(p, sizeof(*cdata));
  +        (modperl_tls_cleanup_data_t *)apr_palloc(p, sizeof(*cdata));
  +
  +    cdata->key = key;
  +    cdata->data = data;
   
       apr_pool_cleanup_register(p, (void *)cdata,
                                 modperl_tls_reset,
  
  
  
  1.12      +1 -1      modperl-2.0/xs/Apache/RequestUtil/Apache__RequestUtil.h
  
  Index: Apache__RequestUtil.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/Apache/RequestUtil/Apache__RequestUtil.h,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Apache__RequestUtil.h     2001/11/13 17:42:49     1.11
  +++ Apache__RequestUtil.h     2001/12/05 19:00:29     1.12
  @@ -85,7 +85,7 @@
   static MP_INLINE
   request_rec *mpxs_Apache_request(pTHX_ SV *classname, SV *svr)
   {
  -    request_rec *cur;
  +    request_rec *cur = NULL;
       apr_status_t status = modperl_tls_get_request_rec(&cur);
   
       if (status != APR_SUCCESS) {
  
  
  


Reply via email to