@@ -67,6 +67,8 @@ typedef enum { cmd_name, cmd_params, cmd_persist,
6767 cmd_min , cmd_keep , cmd_max , cmd_exp
6868} cmd_parts ;
6969
70+ /* a default DBDriver value that'll generate meaningful error messages */
71+ static const char * const no_dbdriver = "[DBDriver unset]" ;
7072
7173#define ISINT (val ) \
7274 for (p = val; *p; ++p) \
@@ -182,7 +184,7 @@ static void *dbd_merge(apr_pool_t *pool, void *BASE, void *ADD) {
182184 svr_cfg * base = (svr_cfg * ) BASE ;
183185 svr_cfg * add = (svr_cfg * ) ADD ;
184186 svr_cfg * cfg = apr_pcalloc (pool , sizeof (svr_cfg ));
185- cfg -> name = strcmp (add -> name , "" ) ? add -> name : base -> name ;
187+ cfg -> name = (add -> name != no_dbdriver ) ? add -> name : base -> name ;
186188 cfg -> params = strcmp (add -> params , "" ) ? add -> params : base -> params ;
187189 cfg -> persist = (add -> persist == -1 ) ? base -> persist : add -> persist ;
188190#if APR_HAS_THREADS
@@ -205,7 +207,8 @@ static void *dbd_merge(apr_pool_t *pool, void *BASE, void *ADD) {
205207static void * dbd_cfg (apr_pool_t * p , server_rec * x )
206208{
207209 svr_cfg * svr = (svr_cfg * ) apr_pcalloc (p , sizeof (svr_cfg ));
208- svr -> name = svr -> params = "" ; /* don't risk segfault on misconfiguration */
210+ svr -> params = "" ; /* don't risk segfault on misconfiguration */
211+ svr -> name = no_dbdriver ; /* to generate meaningful error messages */
209212 svr -> persist = -1 ;
210213#if APR_HAS_THREADS
211214 svr -> nmin = DEFAULT_NMIN ;
0 commit comments