]> git.pond.sub.org Git - empserver/commitdiff
Fix clearing mutable flags on ef_close()
authorMarkus Armbruster <armbru@pond.sub.org>
Thu, 28 Apr 2011 18:20:43 +0000 (20:20 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 25 Jun 2011 14:50:05 +0000 (16:50 +0200)
Make ef_close() clear them always, even for views.  Harmless, as
ef_open_view() always sets the same flags.

Drop redundant assignment to ep->flags in ef_open().  ef_close()
clears mutable flags, no need to clear them some more right before
calling it.  Missed in commit 3eb3607f, v4.3.0.

src/lib/common/file.c

index 817201aab06654545466549aaf2c55b3050b004d..388f8c6a5e11a7aac925999c0cb7ee9240bbadd6 100644 (file)
@@ -145,7 +145,6 @@ ef_open(int type, int how, int nelt)
     if ((how & EFF_MEM) && ep->fids) {
        if (fillcache(ep, 0) != ep->fids) {
            ep->cids = 0;       /* prevent cache flush */
     if ((how & EFF_MEM) && ep->fids) {
        if (fillcache(ep, 0) != ep->fids) {
            ep->cids = 0;       /* prevent cache flush */
-           ep->flags &= EFF_IMMUTABLE; /* maintain invariant */
            ef_close(type);
            return 0;
        }
            ef_close(type);
            return 0;
        }
@@ -264,7 +263,6 @@ ef_close(int type)
     else {
        if (!ef_flush(type))
            retval = 0;
     else {
        if (!ef_flush(type))
            retval = 0;
-       ep->flags &= EFF_IMMUTABLE;
        if (!(ep->flags & EFF_STATIC)) {
            free(ep->cache);
            ep->cache = NULL;
        if (!(ep->flags & EFF_STATIC)) {
            free(ep->cache);
            ep->cache = NULL;
@@ -275,6 +273,7 @@ ef_close(int type)
        }
        ep->fd = -1;
     }
        }
        ep->fd = -1;
     }
+    ep->flags &= EFF_IMMUTABLE;
     ep->baseid = ep->cids = ep->fids = 0;
     if (ep->onresize && ep->onresize(type) < 0)
        retval = 0;
     ep->baseid = ep->cids = ep->fids = 0;
     if (ep->onresize && ep->onresize(type) < 0)
        retval = 0;