]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-fs: Free fs_iter in fs_iter_deinit(), not in individual drivers
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 5 Dec 2019 11:41:26 +0000 (13:41 +0200)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Wed, 11 Dec 2019 10:12:30 +0000 (10:12 +0000)
src/lib-fs/fs-api.c
src/lib-fs/fs-dict.c
src/lib-fs/fs-posix.c
src/lib-fs/fs-randomfail.c
src/lib-fs/fs-test.c
src/lib-fs/fs-wrapper.c

index 6f5815c881fe730604c50a4ca8eee34ab8ca729f..4889f70d1ba4580083cfcc9da0acba6b7abc4c14 100644 (file)
@@ -1163,13 +1163,13 @@ int fs_iter_deinit(struct fs_iter **_iter, const char **error_r)
 
        if (fs->v.iter_deinit == NULL) {
                fs_set_error(fs, "FS iteration not supported");
-               i_free(iter);
                ret = -1;
        } else T_BEGIN {
                ret = iter->fs->v.iter_deinit(iter);
        } T_END;
        if (ret < 0)
                *error_r = fs_last_error(fs);
+       i_free(iter);
        event_unref(&event);
        return ret;
 }
index 72604b642a94bf70d9d35aa4a9a73355efbd409d..e2219494f1dd2808aae8d3a849ec234d7cf595b5 100644 (file)
@@ -313,7 +313,6 @@ static int fs_dict_iter_deinit(struct fs_iter *_iter)
        ret = dict_iterate_deinit(&iter->dict_iter, &error);
        if (ret < 0)
                fs_set_error(_iter->fs, "Dict iteration failed: %s", error);
-       i_free(iter);
        return ret;
 }
 
index 747affaaab5a69c65b31ceaa5961126410afb2a2..f14ef697236ac00ae5bcaf49d0644fe900a0d632 100644 (file)
@@ -960,7 +960,6 @@ static int fs_posix_iter_deinit(struct fs_iter *_iter)
                ret = -1;
        }
        i_free(iter->path);
-       i_free(iter);
        return ret;
 }
 
index 0a32cf747046ab5c3da4c69228978c275226ba27..879bff49d70e3e1767856725e291e06a5064af76 100644 (file)
@@ -509,7 +509,6 @@ static int fs_randomfail_iter_deinit(struct fs_iter *_iter)
                errno = EIO;
                ret = -1;
        }
-       i_free(iter);
        return ret;
 }
 
index 67528bddaadaa42b77b9a1405feba17cf28ca075..fb7f7274c3300a238656348c23ce77841ce1d19c 100644 (file)
@@ -369,7 +369,6 @@ static int fs_test_iter_deinit(struct fs_iter *_iter)
        int ret = iter->failed ? -1 : 0;
 
        i_free(iter->prefix);
-       i_free(iter);
        return ret;
 }
 
index a16d803c29dea80b12abed40dfc9fd29bdfae78e..3fff49950b8f9185de33cd65b143df5bfea0c507 100644 (file)
@@ -167,6 +167,5 @@ int fs_wrapper_iter_deinit(struct fs_iter *_iter)
 
        if ((ret = fs_iter_deinit(&iter->parent, &error)) < 0)
                fs_set_error(_iter->fs, "%s", error);
-       i_free(iter);
        return ret;
 }