From 4af78fbc84fa3f9bb9502107d4c5cdf23f21a82b Mon Sep 17 00:00:00 2001 From: HuuuuDaxia <2443930064@qq.com> Date: Mon, 1 Sep 2025 17:17:13 +0800 Subject: [PATCH 1/2] keep life time Signed-off-by: HuuuuDaxia <2443930064@qq.com> --- services/netconnmanager/src/net_supplier.cpp | 3 ++- services/netconnmanager/src/network.cpp | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/services/netconnmanager/src/net_supplier.cpp b/services/netconnmanager/src/net_supplier.cpp index 7150087f2..0b234d46f 100644 --- a/services/netconnmanager/src/net_supplier.cpp +++ b/services/netconnmanager/src/net_supplier.cpp @@ -135,7 +135,8 @@ int32_t NetSupplier::UpdateNetLinkInfo(NetLinkInfo &netLinkInfo) netLinkInfo.ident_ = GetNetSupplierIdent().substr(strlen(SIMID_IDENT_PREFIX)); } NETMGR_LOG_D("Update netlink info: netLinkInfo[%{public}s]", netLinkInfo.ToString(" ").c_str()); - if (!network_->UpdateNetLinkInfo(netLinkInfo)) { + std::shared_ptr network = network_; + if (!network->UpdateNetLinkInfo(netLinkInfo)) { return NET_CONN_ERR_SERVICE_UPDATE_NET_LINK_INFO_FAIL; } UpdateNetConnState(NET_CONN_STATE_CONNECTED); diff --git a/services/netconnmanager/src/network.cpp b/services/netconnmanager/src/network.cpp index 241f42551..b75f4f330 100644 --- a/services/netconnmanager/src/network.cpp +++ b/services/netconnmanager/src/network.cpp @@ -299,8 +299,8 @@ bool Network::DelayStartDetectionForIpUpdate(bool hasSameIpAddr) if (eventHandler_) { eventHandler_->RemoveTask(taskName); eventHandler_->PostAsyncTask( - [this]() { - StartNetDetection(true); + [self = shared_from_this()]) { + self->StartNetDetection(true); }, taskName, DETECTION_RESULT_WAIT_MS); } return true; -- Gitee From a9b090d6dc2ed0fcd80288c4761188d926eb8d4a Mon Sep 17 00:00:00 2001 From: HuuuuDaxia <2443930064@qq.com> Date: Mon, 1 Sep 2025 17:17:13 +0800 Subject: [PATCH 2/2] keep life time Signed-off-by: HuuuuDaxia <2443930064@qq.com> --- services/netconnmanager/src/net_supplier.cpp | 3 ++- services/netconnmanager/src/network.cpp | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/services/netconnmanager/src/net_supplier.cpp b/services/netconnmanager/src/net_supplier.cpp index 7150087f2..0b234d46f 100644 --- a/services/netconnmanager/src/net_supplier.cpp +++ b/services/netconnmanager/src/net_supplier.cpp @@ -135,7 +135,8 @@ int32_t NetSupplier::UpdateNetLinkInfo(NetLinkInfo &netLinkInfo) netLinkInfo.ident_ = GetNetSupplierIdent().substr(strlen(SIMID_IDENT_PREFIX)); } NETMGR_LOG_D("Update netlink info: netLinkInfo[%{public}s]", netLinkInfo.ToString(" ").c_str()); - if (!network_->UpdateNetLinkInfo(netLinkInfo)) { + std::shared_ptr network = network_; + if (!network->UpdateNetLinkInfo(netLinkInfo)) { return NET_CONN_ERR_SERVICE_UPDATE_NET_LINK_INFO_FAIL; } UpdateNetConnState(NET_CONN_STATE_CONNECTED); diff --git a/services/netconnmanager/src/network.cpp b/services/netconnmanager/src/network.cpp index 241f42551..43b1e76b1 100644 --- a/services/netconnmanager/src/network.cpp +++ b/services/netconnmanager/src/network.cpp @@ -299,8 +299,8 @@ bool Network::DelayStartDetectionForIpUpdate(bool hasSameIpAddr) if (eventHandler_) { eventHandler_->RemoveTask(taskName); eventHandler_->PostAsyncTask( - [this]() { - StartNetDetection(true); + [self = shared_from_this()] { + self->StartNetDetection(true); }, taskName, DETECTION_RESULT_WAIT_MS); } return true; -- Gitee