From dbca214ef2d013bac79eaf5f73eb1978f5fa2387 Mon Sep 17 00:00:00 2001 From: WolverinDEV Date: Thu, 7 May 2020 21:39:26 +0200 Subject: [PATCH] Some minimal changes --- license/shared/src/client.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/license/shared/src/client.cpp b/license/shared/src/client.cpp index 0ccceab..a04d1f2 100644 --- a/license/shared/src/client.cpp +++ b/license/shared/src/client.cpp @@ -94,13 +94,21 @@ bool LicenseServerClient::start_connection(std::string &error) { this->network.event_base = event_base_new(); this->network.event_read = event_new(this->network.event_base, this->network.file_descriptor, EV_READ | EV_PERSIST, [](int, short e, void* _this) { auto client = reinterpret_cast(_this); - auto client_ref = client->shared_from_this(); /* We're not allowed to delete outself while hading data. This will lead to dangling pointers */ + auto client_ref = client->weak_from_this().lock(); + if(!client_ref) { + logCritical(0, "Network callback for expired client (E011)!"); + return; + } client->callback_read(e); client_ref.reset(); }, this); this->network.event_write = event_new(this->network.event_base, this->network.file_descriptor, EV_WRITE, [](int, short e, void* _this) { auto client = reinterpret_cast(_this); - auto client_ref = client->shared_from_this(); /* We're not allowed to delete outself while hading data. This will lead to dangling pointers */ + auto client_ref = client->weak_from_this().lock(); + if(!client_ref) { + logCritical(0, "Network callback for expired client (E012)!"); + return; + } client->callback_write(e); client_ref.reset(); }, this);