From b6586e520fdc079ec40b9b5956254cc5f10a1285 Mon Sep 17 00:00:00 2001 From: Volker Birk Date: Tue, 4 Aug 2020 09:39:42 +0200 Subject: [PATCH] Backed out changeset 68c2124f583a This leads to double free because of unordered_map --- message_cache.cc | 12 ++---------- message_cache.hh | 4 ++-- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/message_cache.cc b/message_cache.cc index 492ec83..d14edf1 100644 --- a/message_cache.cc +++ b/message_cache.cc @@ -16,16 +16,6 @@ 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, @@ -360,6 +350,8 @@ 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 a69dd6e..0940fb7 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); - ~cache_entry(); + cache_entry(::message *s, ::message *d) + : src(s), dst(d) { } ::message *src; ::message *dst;