From 45629480a3673e79569468d52ee28dbefce21b7f Mon Sep 17 00:00:00 2001 From: xiepengfei Date: Fri, 18 Sep 2026 22:43:57 +0800 Subject: [PATCH] fix: guard null pointer in updateViewModeActions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Root cause: m_actLivePreview is initialized to nullptr and only assigned in initRightClickedMenu(), but updateViewModeActions() can be called via signal/slot before initialization completes 2. Fix: add null check before calling setEnabled on m_actLivePreview, consistent with the existing null-safe pattern on the preceding line 3. Impact: prevents null pointer dereference crash when switching view modes before right-click menu initialization Influence: 1. Test switching view modes before opening right-click menu 2. Test markdown file open and view mode toggle 3. Verify no regression on normal view mode switching fix: 修复updateViewModeActions空指针解引用问题 1. 根因:m_actLivePreview初始化为nullptr,仅在initRightClickedMenu() 中赋值,但updateViewModeActions()可通过signal/slot在初始化前被调用 2. 方案:在调用m_actLivePreview->setEnabled前添加空指针检查,与同 函数已有的空安全模式保持一致 3. 影响:防止右键菜单初始化前切换视图模式导致的空指针崩溃 Influence: 1. 测试右键菜单初始化前切换视图模式 2. 测试Markdown文件打开及视图模式切换 3. 验证正常视图模式切换无回归 PMS: BUG-186 --- src/editor/dtextedit.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/editor/dtextedit.cpp b/src/editor/dtextedit.cpp index 545865df..5e2e2e36 100644 --- a/src/editor/dtextedit.cpp +++ b/src/editor/dtextedit.cpp @@ -5046,7 +5046,8 @@ void TextEdit::updateViewModeActions(ViewMode mode, bool isMarkdown) if (action && !action->isChecked()) action->setChecked(true); // 置灰规则(§4.4):非 md 文件仅「实时预览」置灰,编辑/查看始终可用 - m_actLivePreview->setEnabled(isMarkdown); + if (m_actLivePreview) + m_actLivePreview->setEnabled(isMarkdown); } void TextEdit::SendtoggleReadmessage()