Commit 5e847a05 authored by Dominik Charousset's avatar Dominik Charousset

Fix possible memory leak with sync messages

Sync response messages did not properly restore `current_element_`, neither did
`local_actor::cleanup`. As a result, messages could not get deleted and thus
leak memory.
parent 1ad06ce2
...@@ -370,6 +370,7 @@ invoke_message_result local_actor::invoke_message(mailbox_element_ptr& ptr, ...@@ -370,6 +370,7 @@ invoke_message_result local_actor::invoke_message(mailbox_element_ptr& ptr,
handle_sync_failure(); handle_sync_failure();
} }
} }
ptr.swap(current_mailbox_element());
mark_arrived(awaited_id); mark_arrived(awaited_id);
return im_success; return im_success;
} }
...@@ -840,6 +841,7 @@ behavior& local_actor::get_behavior() { ...@@ -840,6 +841,7 @@ behavior& local_actor::get_behavior() {
void local_actor::cleanup(uint32_t reason) { void local_actor::cleanup(uint32_t reason) {
CAF_LOG_TRACE(CAF_ARG(reason)); CAF_LOG_TRACE(CAF_ARG(reason));
current_mailbox_element().reset();
detail::sync_request_bouncer f{reason}; detail::sync_request_bouncer f{reason};
mailbox_.close(f); mailbox_.close(f);
pending_responses_.clear(); pending_responses_.clear();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment