Skip to content

闪退bug:数组为空时访问索引0导致越界 #1

@wzc1392969921

Description

@wzc1392969921

Godot version

v.4.5.3

godot-cpp version

1

System information

windows11

Issue description

偶遇闪退问题,不确定是什么原因导致的。情况大致如下:在安卓端,运行1分钟,会突然闪退,如果只连接不用手指操作那就不会闪退。

日志.txt

这个是捕获的日志

远程控制.zip

这个是不包含addon的项目源代码。

这个是ai的分析结果:

崩溃原因确认:不是发送频率的问题(日志显示实际频率只有~14Hz)。

真正原因是 cowdata.h 数组越界:
1 FATAL: Index p_index = 0 is out of bounds (size() = 0)
Native 层的触摸指针列表为空时,send_touch_event(TOUCH_EVENT_MOVE) 仍被调用,导致访问空数组的第0个元素而崩溃。

修复方案:

  • 新增 _touch_is_down 状态追踪
  • TOUCH_EVENT_MOVE 只在手指确实按下时才发送
  • TOUCH_EVENT_UP 发送后立即将状态置为 false

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions