diff -u -r1.43 dirtree.c --- src/dirtree.c 2001/12/13 20:35:50 1.43 +++ src/dirtree.c 2001/12/16 19:38:42 @@ -1371,23 +1371,24 @@ newd->argv = pcalloc(newd->pool,2*sizeof(void*)); newd->parent = d; d = newd; - } else if(d->subset && d->subset->xas_list && - strcmp(d->name,fullpath) == 0 && + } else if(strcmp(d->name,fullpath) == 0 && (isfile == -1 || sbuf.st_mtime > (time_t)d->argv[0])) { set = (d->parent ? &d->parent->subset : &main_server->conf); - /* remove all old dynamic entries */ - for(newd = (config_rec*)d->subset->xas_list; newd; newd=dnext) { - dnext = newd->next; + if (d->subset && d->subset->xas_list) { + /* remove all old dynamic entries */ + for(newd = (config_rec*)d->subset->xas_list; newd; newd=dnext) { + dnext = newd->next; - if(newd->flags & CF_DYNAMIC) { - xaset_remove(d->subset,(xasetmember_t*)newd); - removed++; + if(newd->flags & CF_DYNAMIC) { + xaset_remove(d->subset,(xasetmember_t*)newd); + removed++; + } } - } + } - if(!d->subset->xas_list) { + if(d->subset && !d->subset->xas_list) { destroy_pool(d->subset->mempool); d->subset = NULL; d->argv[0] = NULL;