From: Vsevolod Stakhov Date: Sat, 24 Sep 2022 14:31:29 +0000 (+0100) Subject: [Minor] Plug memory leak on cdb backend closing X-Git-Tag: 3.3~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b20b81d996b60b3e284843bd8034162ed1551927;p=thirdparty%2Frspamd.git [Minor] Plug memory leak on cdb backend closing --- diff --git a/src/libstat/backends/cdb_backend.cxx b/src/libstat/backends/cdb_backend.cxx index 36dbc9816b..22a6c3dabf 100644 --- a/src/libstat/backends/cdb_backend.cxx +++ b/src/libstat/backends/cdb_backend.cxx @@ -78,7 +78,7 @@ public: } else { /* Not existing, make a weak ptr and return the original */ - elts.emplace(path,std::weak_ptr(cdbp)); + elts.emplace(path, std::weak_ptr(cdbp)); return cdbp; } } @@ -92,6 +92,7 @@ private: struct cdb_deleter { void operator()(struct cdb *c) const { cdb_free(c); + delete c; } }; }; @@ -101,7 +102,7 @@ static cdb_shared_storage cdb_shared_storage; class ro_backend final { public: explicit ro_backend(struct rspamd_statfile *_st, cdb_shared_storage::cdb_element_t _db) - : st(_st), db(_db) {} + : st(_st), db(std::move(_db)) {} ro_backend() = delete; ro_backend(const ro_backend &) = delete; ro_backend(ro_backend &&other) noexcept { @@ -328,7 +329,7 @@ open_cdb(struct rspamd_statfile *st) -> tl::expected path)); } - ro_backend bk{st, cdbp}; + ro_backend bk{st, std::move(cdbp)}; auto res = bk.load_cdb();