fix memory leak by API::umake_event

This commit is contained in:
Jinhao 2017-02-25 02:36:08 +08:00
parent 00d2e5408f
commit 663c7d361f

View File

@ -85,7 +85,7 @@ namespace nana
if (reinterpret_cast<detail::docker_interface*>(evt) == *i) if (reinterpret_cast<detail::docker_interface*>(evt) == *i)
{ {
//Checks whether this event is working now. //Checks whether this event is working now.
if (emitting_count_ > 1) if (emitting_count_)
{ {
static_cast<docker_base*>(*i)->flag_deleted = true; static_cast<docker_base*>(*i)->flag_deleted = true;
deleted_flags_ = true; deleted_flags_ = true;
@ -134,7 +134,11 @@ namespace nana
for (auto i = evt_->dockers_->begin(); i != evt_->dockers_->end();) for (auto i = evt_->dockers_->begin(); i != evt_->dockers_->end();)
{ {
if (static_cast<docker_base*>(*i)->flag_deleted) if (static_cast<docker_base*>(*i)->flag_deleted)
{
bedrock::instance().evt_operation().cancel(reinterpret_cast<event_handle>(*i));
delete (*i);
i = evt_->dockers_->erase(i); i = evt_->dockers_->erase(i);
}
else else
++i; ++i;
} }