From: Timo Sirainen Date: Thu, 5 Dec 2019 11:41:26 +0000 (+0200) Subject: lib-fs: Free fs_iter in fs_iter_deinit(), not in individual drivers X-Git-Tag: 2.3.10~220 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e090699a1471c415c2d08abf470f54ac05af1ff4;p=thirdparty%2Fdovecot%2Fcore.git lib-fs: Free fs_iter in fs_iter_deinit(), not in individual drivers --- diff --git a/src/lib-fs/fs-api.c b/src/lib-fs/fs-api.c index 6f5815c881..4889f70d1b 100644 --- a/src/lib-fs/fs-api.c +++ b/src/lib-fs/fs-api.c @@ -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; } diff --git a/src/lib-fs/fs-dict.c b/src/lib-fs/fs-dict.c index 72604b642a..e2219494f1 100644 --- a/src/lib-fs/fs-dict.c +++ b/src/lib-fs/fs-dict.c @@ -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; } diff --git a/src/lib-fs/fs-posix.c b/src/lib-fs/fs-posix.c index 747affaaab..f14ef69723 100644 --- a/src/lib-fs/fs-posix.c +++ b/src/lib-fs/fs-posix.c @@ -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; } diff --git a/src/lib-fs/fs-randomfail.c b/src/lib-fs/fs-randomfail.c index 0a32cf7470..879bff49d7 100644 --- a/src/lib-fs/fs-randomfail.c +++ b/src/lib-fs/fs-randomfail.c @@ -509,7 +509,6 @@ static int fs_randomfail_iter_deinit(struct fs_iter *_iter) errno = EIO; ret = -1; } - i_free(iter); return ret; } diff --git a/src/lib-fs/fs-test.c b/src/lib-fs/fs-test.c index 67528bddaa..fb7f7274c3 100644 --- a/src/lib-fs/fs-test.c +++ b/src/lib-fs/fs-test.c @@ -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; } diff --git a/src/lib-fs/fs-wrapper.c b/src/lib-fs/fs-wrapper.c index a16d803c29..3fff49950b 100644 --- a/src/lib-fs/fs-wrapper.c +++ b/src/lib-fs/fs-wrapper.c @@ -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; }