]> git.pond.sub.org Git - empserver/commitdiff
(ef_open): Don't assume blksize() is the same for all files.
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 22 Oct 2005 19:12:27 +0000 (19:12 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 22 Oct 2005 19:12:27 +0000 (19:12 +0000)
(ef_open): Ensure the cache has at least one slot.

src/lib/common/file.c

index 13805a4f81d4408b63850ebebcea941cb938b09c..b81516410a38d34e6f1ea893fde5dc7cc58fc725 100644 (file)
@@ -57,7 +57,6 @@ int
 ef_open(int type, int mode, int how)
 {
     struct empfile *ep;
-    static int block;
     int size;
 
 #if defined(_WIN32)
@@ -70,8 +69,6 @@ ef_open(int type, int mode, int how)
        logerror("%s: open failed", ep->file);
        return 0;
     }
-    if (block == 0)
-       block = blksize(ep->fd);
     ep->baseid = 0;
     ep->cids = 0;
     ep->mode = mode;
@@ -80,7 +77,7 @@ ef_open(int type, int mode, int how)
     if (ep->flags & EFF_MEM)
        ep->csize = ep->fids;
     else
-       ep->csize = block / ep->size;
+       ep->csize = max(1, blksize(ep->fd) / ep->size);
     size = ep->csize * ep->size;
     ep->cache = malloc(size);
     if ((ep->cache == NULL) && (size != 0)) {