Snapshot before max-resize threshold diagnosis
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
# Fix-BUG-20260409-0002
|
||||
|
||||
> 适用场景:记录某个 BUG 的修复方案、影响评估、验证结果与落地信息。
|
||||
|
||||
## 关联信息
|
||||
|
||||
- Fix ID: Fix-BUG-20260409-0002
|
||||
- 关联 BUG ID: BUG-20260409-0002
|
||||
- 修复目标: 收紧资源所有权,补齐基础边界防御,修正生命周期与接口语义问题
|
||||
- 状态:已完成 / 待持续回归
|
||||
- 负责人:Codex 协作修改
|
||||
- 分支 / 版本:`master`
|
||||
|
||||
## 根因分析
|
||||
|
||||
- 根因:
|
||||
- 部分对象持有关系不清晰,析构顺序对 EasyX 上下文敏感。
|
||||
- `Table / Label` 等基础控件对空状态和动态变化处理不足。
|
||||
- `MessageBox` 曾通过历史接口越权干预 `Dialog` 初始化。
|
||||
- 触发条件:
|
||||
- 析构时机
|
||||
- 空数据 / 列数不一致
|
||||
- 动态变更文本
|
||||
- 为什么之前没发现:
|
||||
- 很多问题集中在边界输入和静态结构设计,而非主路径功能
|
||||
|
||||
## 修复方案
|
||||
|
||||
- 修复思路:
|
||||
- 收紧资源所有权
|
||||
- 明确析构顺序
|
||||
- 给空状态和列数不一致加防御
|
||||
- 让接口更贴合真实职责
|
||||
- 关键改动:
|
||||
- `Window` 析构先清空控件树,再 `closegraph()`
|
||||
- `Control / Window / Button / Table` 中一批资源改为明确所有权
|
||||
- `Table` 增加空状态、列数规范化、分页下限保护、表高计算
|
||||
- `Label::setText()` 重新计算尺寸并处理旧快照
|
||||
- `MessageBox` 移除外层 `setInitialization(true)` 调用
|
||||
- 涉及文件 / 类 / 函数:
|
||||
- `Control.h / Control.cpp`
|
||||
- `Window.h / Window.cpp`
|
||||
- `Button.h / Button.cpp`
|
||||
- `Table.h / Table.cpp`
|
||||
- `Label.cpp`
|
||||
- `MessageBox.cpp`
|
||||
- `TextBox.cpp`
|
||||
- 影响的 API / 行为:
|
||||
- `Button` 回调 setter 语义收正常
|
||||
- `MessageBox` 不再依赖外层强制初始化 `Dialog`
|
||||
- 关键约束 / 不变量:
|
||||
- 宿主图形上下文必须在控件销毁后再关闭
|
||||
- 表格行数据必须与表头列数对齐
|
||||
|
||||
## 影响评估
|
||||
|
||||
- 影响范围:
|
||||
- 基础控件稳定性与维护性
|
||||
- 兼容性影响:低
|
||||
- 行为变化:有(边界输入会被规范化,不再放任异常状态继续传播)
|
||||
- 性能影响:无明显负担
|
||||
- 回归风险:
|
||||
- 主要集中在表格布局与分页按钮链路
|
||||
|
||||
## 验证结果
|
||||
|
||||
- 验证步骤:
|
||||
|
||||
1. 编译 `Window / Control / Table / Label / MessageBox / TextBox` 相关文件。
|
||||
2. 逻辑推演空表头、长行数据、动态文本变化和窗口关闭链路。
|
||||
3. 在现有测试用例中回归表格和消息框基本功能。
|
||||
|
||||
- 验证结果:
|
||||
- 已消除确定性越界和明显生命周期风险。
|
||||
- 回归检查:
|
||||
- 字符集相关问题暂不在本次修复范围内。
|
||||
- 验证证据:
|
||||
- 静态审查 + 编译通过
|
||||
|
||||
## 落地信息
|
||||
|
||||
- Commit:
|
||||
- `dde570a` 之后的早期工作区修改
|
||||
- `4a6e153`
|
||||
- `7f8431a`
|
||||
- PR:[可选]
|
||||
- 发布版本:[可选]
|
||||
- 备注:这部分修复多为基础治理,部分早期修改发生在仓库初始化之前
|
||||
Reference in New Issue
Block a user