--- sm/storage_db.c 2004-05-31 23:31:05.000000000 +0200 +++ ../jabberd-2.0s3.new/sm/storage_db.c 2004-10-25 16:36:30.016018000 +0200 @@ -311,6 +311,7 @@ st_filter_t f; int err; os_object_t o; + char *cfilter; ret = _st_db_cursor_new(drv, dbd, &c, &t); if(ret != st_SUCCESS) @@ -321,7 +322,8 @@ f = xhash_get(data->filters, filter); if(f == NULL) { f = storage_filter(filter); - xhash_put(data->filters, filter, (void *) f); + cfilter = pstrdup(xhash_pool(data->filters), filter); + xhash_put(data->filters, cfilter, (void *) f); pool_cleanup(xhash_pool(data->filters), (pool_cleaner) pool_free, f->p); } } @@ -373,13 +375,15 @@ int err; os_t os; os_object_t o; + char *cfilter; f = NULL; if(filter != NULL) { f = xhash_get(data->filters, filter); if(f == NULL) { f = storage_filter(filter); - xhash_put(data->filters, filter, (void *) f); + cfilter = pstrdup(xhash_pool(data->filters), filter); + xhash_put(data->filters, cfilter, (void *) f); pool_cleanup(xhash_pool(data->filters), (pool_cleaner) pool_free, f->p); } }