diff --git a/include/file.h b/include/file.h index 3a92c5bd..e63a5190 100644 --- a/include/file.h +++ b/include/file.h @@ -131,7 +131,7 @@ struct fileinit { extern struct castr *ef_cadef(int); extern int ef_read(int, int, void *); -extern char *ef_ptr(int, int); +extern void *ef_ptr(int, int); extern char *ef_nameof(int); extern time_t ef_mtime(int); extern int ef_open(int, int); diff --git a/src/lib/common/file.c b/src/lib/common/file.c index 4023cf93..b8a71f7f 100644 --- a/src/lib/common/file.c +++ b/src/lib/common/file.c @@ -171,20 +171,19 @@ ef_flush(int type) /* * Return a pointer the id 'id' of object of type 'type' in the cache. */ -char * +void * ef_ptr(int type, int id) { struct empfile *ep; if (ef_check(type) < 0) return NULL; + ep = &empfile[type]; + if (CANT_HAPPEN(!(ep->flags & EFF_MEM))) + return NULL; if (id < 0 || id >= ep->fids) - return NULL; - if ((ep->flags & EFF_MEM) == 0) { - logerror("ef_ptr: (%s) only valid for EFF_MEM entries", ep->file); - return NULL; - } + return NULL; /* FIXME can this happen? */ return ep->cache + ep->size * id; } diff --git a/src/lib/update/nxtitemp.c b/src/lib/update/nxtitemp.c index f376f6cf..d9b2399e 100644 --- a/src/lib/update/nxtitemp.c +++ b/src/lib/update/nxtitemp.c @@ -60,7 +60,7 @@ nxtitemp(struct nstr_item *np) } else { np->cur++; } - gp = (struct genitem *)ef_ptr(np->type, np->cur); + gp = ef_ptr(np->type, np->cur); if (gp == (struct genitem *)0) return 0;