From 35f0c6637397644df36c7982237f9237adefd8c4 Mon Sep 17 00:00:00 2001 From: zhanghongyuan Date: Fri, 23 Oct 2026 07:51:56 +0800 Subject: [PATCH 1/2] fix: add null check for PageSingleInfo cast in RichTextDelegate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. RichTextDelegate::paint dereferences dynamic_cast result without null check when parent is not PageSingleInfo 2. Add null pointer check before calling setRowHeight to prevent crash 3. No behavior change when parent is PageSingleInfo, only skips setRowHeight when parent is other type like PageTableWidget Influence: 1. Test RichTextDelegate with PageSingleInfo parent and multi-line text 2. Test RichTextDelegate with PageTableWidget parent and multi-line text 3. Verify no crash and text rendering is correct in both cases fix: RichTextDelegate::paint 增加空指针检查防止崩溃 1. RichTextDelegate::paint 在 parent 非 PageSingleInfo 时 dynamic_cast 返回空指针后直接解引用导致崩溃 2. 增加 dynamic_cast 结果空指针检查后再调用 setRowHeight 3. parent 为 PageSingleInfo 时行为不变,为其他类型时跳过 setRowHeight 调用不影响文本绘制 Influence: 1. 测试 parent 为 PageSingleInfo 时多行文本绘制正常 2. 测试 parent 为 PageTableWidget 时多行文本不崩溃 3. 验证两种场景下文本渲染结果正确 --- deepin-devicemanager/src/Widget/RichTextDelegate.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/deepin-devicemanager/src/Widget/RichTextDelegate.cpp b/deepin-devicemanager/src/Widget/RichTextDelegate.cpp index 4c6a165bc..2f3c82e43 100644 --- a/deepin-devicemanager/src/Widget/RichTextDelegate.cpp +++ b/deepin-devicemanager/src/Widget/RichTextDelegate.cpp @@ -248,7 +248,10 @@ void RichTextDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti // bug111063中 社区版与专业版使用同一代码,主板界面展示效果不同 // PageBoardInfo 中计算行高方式与html中计算行高方式不同,导致每行下方出现截断或空白 // 此处获取html整体高度后再对PageBoardInfo设置行高,则不会再出现截断或空白 - dynamic_cast(this->parent())->setRowHeight(index.row(), textDoc.size().toSize().height() + 6); + PageSingleInfo *pageSingleInfo = dynamic_cast(this->parent()); + if (pageSingleInfo) { + pageSingleInfo->setRowHeight(index.row(), textDoc.size().toSize().height() + 6); + } QAbstractTextDocumentLayout::PaintContext paintContext; paintContext.palette.setCurrentColorGroup(cg); From f4e82c35cf5a1741e9407b12e04c780f0dd03ae3 Mon Sep 17 00:00:00 2001 From: zhanghongyuan Date: Mon, 26 Oct 2026 18:11:38 +0800 Subject: [PATCH 2/2] chore: update SPDX copyright year to 2022-2026 (CI SPDX check) --- deepin-devicemanager/src/Widget/RichTextDelegate.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deepin-devicemanager/src/Widget/RichTextDelegate.cpp b/deepin-devicemanager/src/Widget/RichTextDelegate.cpp index 2f3c82e43..ab452d4c4 100644 --- a/deepin-devicemanager/src/Widget/RichTextDelegate.cpp +++ b/deepin-devicemanager/src/Widget/RichTextDelegate.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2022-2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later