diff --git a/message_cache.cc b/message_cache.cc index d14edf1..492ec83 100644 --- a/message_cache.cc +++ b/message_cache.cc @@ -16,6 +16,16 @@ namespace pEp { next_id = u(e); } + MessageCache::cache_entry::cache_entry(::message *s, ::message *d) + : src(s), dst(d) + { } + + MessageCache::cache_entry::~cache_entry() + { + ::free_message(src); + ::free_message(dst); + } + PEP_STATUS MessageCache::cache_decrypt_message( PEP_SESSION session, message *src, @@ -350,8 +360,6 @@ namespace pEp { { std::lock_guard l(_mtx); - ::free_message(_cache.at(msg->id).src); - ::free_message(_cache.at(msg->id).dst); _cache.erase(msg->id); } diff --git a/message_cache.hh b/message_cache.hh index 0940fb7..a69dd6e 100644 --- a/message_cache.hh +++ b/message_cache.hh @@ -9,8 +9,8 @@ namespace pEp { class MessageCache { struct cache_entry { - cache_entry(::message *s, ::message *d) - : src(s), dst(d) { } + cache_entry(::message *s, ::message *d); + ~cache_entry(); ::message *src; ::message *dst;