Author: torsten Date: Mon Mar 19 13:47:18 2012 New Revision: 1302431 URL: http://svn.apache.org/viewvc?rev=1302431&view=rev Log: Adopt modperl_pcw.c changes from httpd24 branch.
Modified: perl/modperl/trunk/Changes perl/modperl/trunk/src/modules/perl/modperl_pcw.c Modified: perl/modperl/trunk/Changes URL: http://svn.apache.org/viewvc/perl/modperl/trunk/Changes?rev=1302431&r1=1302430&r2=1302431&view=diff ============================================================================== --- perl/modperl/trunk/Changes (original) +++ perl/modperl/trunk/Changes Mon Mar 19 13:47:18 2012 @@ -12,6 +12,8 @@ Also refer to the Apache::Test changes l =item 2.0.6-dev +Adopt modperl_pcw.c changes from httpd24 branch. [Torsten Foertsch] + Pool cleanup functions must not longjmp. Catch these exceptions and turn them into warnings. [Torsten Foertsch] Modified: perl/modperl/trunk/src/modules/perl/modperl_pcw.c URL: http://svn.apache.org/viewvc/perl/modperl/trunk/src/modules/perl/modperl_pcw.c?rev=1302431&r1=1302430&r2=1302431&view=diff ============================================================================== --- perl/modperl/trunk/src/modules/perl/modperl_pcw.c (original) +++ perl/modperl/trunk/src/modules/perl/modperl_pcw.c Mon Mar 19 13:47:18 2012 @@ -27,7 +27,11 @@ void ap_pcw_walk_location_config(apr_poo ap_pcw_dir_cb_t dir_cb, void *data) { int i; - ap_conf_vector_t **urls = (ap_conf_vector_t **)sconf->sec_url->elts; + ap_conf_vector_t **urls; + + if( !sconf->sec_url ) return; + + urls = (ap_conf_vector_t **)sconf->sec_url->elts; for (i = 0; i < sconf->sec_url->nelts; i++) { core_dir_config *conf = @@ -46,7 +50,11 @@ void ap_pcw_walk_directory_config(apr_po ap_pcw_dir_cb_t dir_cb, void *data) { int i; - ap_conf_vector_t **dirs = (ap_conf_vector_t **)sconf->sec_dir->elts; + ap_conf_vector_t **dirs; + + if( !sconf->sec_dir ) return; + + dirs = (ap_conf_vector_t **)sconf->sec_dir->elts; for (i = 0; i < sconf->sec_dir->nelts; i++) { core_dir_config *conf = @@ -65,7 +73,11 @@ void ap_pcw_walk_files_config(apr_pool_t ap_pcw_dir_cb_t dir_cb, void *data) { int i; - ap_conf_vector_t **dirs = (ap_conf_vector_t **)dconf->sec_file->elts; + ap_conf_vector_t **dirs; + + if( !dconf->sec_file ) return; + + dirs = (ap_conf_vector_t **)dconf->sec_file->elts; for (i = 0; i < dconf->sec_file->nelts; i++) { core_dir_config *conf =