]> git.pond.sub.org Git - empserver/commitdiff
(ef_open): Zero cache size (empty EFF_MEM file) can lead to null cache
authorMarkus Armbruster <armbru@pond.sub.org>
Mon, 6 Mar 2006 18:23:41 +0000 (18:23 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Mon, 6 Mar 2006 18:23:41 +0000 (18:23 +0000)
on some systems, which confuses assertions.  Force non-zero size.

src/lib/common/file.c

index ba709093a15b7589b4ba40ce21059db5e675f948..4d670461d267efbe4ff3d2f548fe5f6491ce11e3 100644 (file)
@@ -114,12 +114,15 @@ ef_open(int type, int how)
        if (how & EFF_MEM)
            ep->csize = ep->fids;
        else
-           ep->csize = MAX(1, blksize(fd) / ep->size);
+           ep->csize = blksize(fd) / ep->size;
+       /* 0 could lead to null cache, which confuses assertions */
+       if (!ep->csize)
+           ep->csize++;
        size = ep->csize * ep->size;
        if (CANT_HAPPEN(ep->cache))
            free(ep->cache);
        ep->cache = malloc(size);
-       if (ep->cache == NULL && size) {
+       if (ep->cache == NULL) {
            logerror("Can't open %s: out of memory", ep->file);
            close(fd);
            return 0;