Commit 4c1b9d83 by Maarten L. Hekkelman

Fix memory leak

parent b976b465
...@@ -681,16 +681,14 @@ inline condition operator or(condition &&a, condition &&b) ...@@ -681,16 +681,14 @@ inline condition operator or(condition &&a, condition &&b)
if (typeid(*a.m_impl) == typeid(detail::key_equals_condition_impl) and if (typeid(*a.m_impl) == typeid(detail::key_equals_condition_impl) and
typeid(*b.m_impl) == typeid(detail::key_is_empty_condition_impl)) typeid(*b.m_impl) == typeid(detail::key_is_empty_condition_impl))
{ {
detail::key_equals_condition_impl *ci = static_cast<detail::key_equals_condition_impl *>(std::exchange(a.m_impl, nullptr)); auto ci = static_cast<detail::key_equals_condition_impl *>(a.m_impl);
delete std::exchange(b.m_impl, nullptr);
return condition(new detail::key_equals_or_empty_condition_impl(ci)); return condition(new detail::key_equals_or_empty_condition_impl(ci));
} }
if (typeid(*b.m_impl) == typeid(detail::key_equals_condition_impl) and if (typeid(*b.m_impl) == typeid(detail::key_equals_condition_impl) and
typeid(*a.m_impl) == typeid(detail::key_is_empty_condition_impl)) typeid(*a.m_impl) == typeid(detail::key_is_empty_condition_impl))
{ {
detail::key_equals_condition_impl *ci = static_cast<detail::key_equals_condition_impl *>(std::exchange(b.m_impl, nullptr)); auto ci = static_cast<detail::key_equals_condition_impl *>(b.m_impl);
delete std::exchange(a.m_impl, nullptr);
return condition(new detail::key_equals_or_empty_condition_impl(ci)); return condition(new detail::key_equals_or_empty_condition_impl(ci));
} }
......
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