From f74d47e62e1036f2f43074671814278422181b00 Mon Sep 17 00:00:00 2001 From: gaozheng Date: Thu, 11 Jun 2026 19:59:23 +0800 Subject: [PATCH] =?UTF-8?q?harden(net):=20ApiCall=20onFinished=20reply=20?= =?UTF-8?q?=E5=BF=AB=E7=85=A7=E9=98=B2=E5=BE=A1=20+=20=E6=9E=84=E9=80=A0?= =?UTF-8?q?=20Q=5FASSERT(reply)=EF=BC=88=E8=AF=84=E5=AE=A1=20H3/L1?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/net/ApiCall.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/net/ApiCall.cpp b/src/net/ApiCall.cpp index 5ef287e..a23d9ed 100644 --- a/src/net/ApiCall.cpp +++ b/src/net/ApiCall.cpp @@ -6,13 +6,16 @@ namespace geopro::net { ApiCall::ApiCall(QNetworkReply* reply, QObject* parent) : IApiCall(parent), reply_(reply) { + Q_ASSERT(reply); // 契约:不接受 null reply(NAM get/post 正常不返回 null) QObject::connect(reply_, &QNetworkReply::finished, this, &ApiCall::onFinished); } void ApiCall::onFinished() { if (aborted_) return; // §5.0 入口守卫:迟到信号闸门 - ApiResponse resp = buildResponse(reply_); - if (reply_) reply_->deleteLater(); + QNetworkReply* reply = reply_.data(); // 快照:意图明确 + 防御 reply_ 中途被置空 + if (!reply) return; + ApiResponse resp = buildResponse(reply); + reply->deleteLater(); emit finished(resp); deleteLater(); }