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) {