From 879bad64e295950178efdba1d3e7d57c72c66a03 Mon Sep 17 00:00:00 2001 From: zhangkun Date: Mon, 24 Nov 2025 13:44:47 +0800 Subject: [PATCH] fix: disconnect lineEdit in AuthPassword destructor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Added disconnect call for m_lineEdit from this object in destructor 2. Prevents potential lambda function access to deleted this pointer 3. Ensures clean signal-slot disconnection during object destruction 4. Avoids use-after-free crashes when signals are emitted after object deletion Influence: 1. Test password authentication widget destruction scenarios 2. Verify no crashes when closing authentication dialogs 3. Test signal emission handling during widget lifecycle 4. Validate memory safety in authentication flow fix: 在AuthPassword析构函数中断开lineEdit连接 1. 在析构函数中添加了m_lineEdit与当前对象的断开连接调用 2. 防止lambda函数访问已删除的this指针 3. 确保对象销毁时信号槽连接的清理 4. 避免对象删除后信号发射导致的use-after-free崩溃 Influence: 1. 测试密码认证小部件的销毁场景 2. 验证关闭认证对话框时不会出现崩溃 3. 测试小部件生命周期中的信号发射处理 4. 验证认证流程中的内存安全性 pms: BUG-341127 --- src/session-widgets/auth_password.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/session-widgets/auth_password.cpp b/src/session-widgets/auth_password.cpp index a9fb4e20..cee0e131 100644 --- a/src/session-widgets/auth_password.cpp +++ b/src/session-widgets/auth_password.cpp @@ -75,6 +75,8 @@ AuthPassword::AuthPassword(QWidget *parent) AuthPassword::~AuthPassword() { + // QWidget析构时会clearFocus, focusChanged会被触发,且槽函数操作了成员变量会导致崩溃,在这里提前断开连接 + m_lineEdit->disconnect(this); if (m_resetPasswordMessageVisible) { closeResetPasswordMessage(); }