mirror of
https://github.com/zed-industries/zed.git
synced 2026-05-28 01:24:17 +00:00
The `draw()` method was calling `.pop()` on `next_frame.input_handlers` to extract the active input handler for the platform window. This reduced the Vec length, making cached `paint_range` indices stale. On the next frame, when a cached view called `reuse_paint()`, it would index into `rendered_frame.input_handlers` with out-of-bounds indices, causing a panic: `range start index 1 out of range for slice of length 0`. **Fix:** Use `.last_mut().and_then(|h| h.take())` instead of `.pop()` to extract the handler without changing the Vec length. The slot becomes `None`, which is already handled by `reuse_paint`'s `.take()` logic. Closes #50456 ### Testing - All 83 existing GPUI unit tests pass - Manually verified with [longbridge/gpui-component](https://github.com/longbridge/gpui-component) `cargo run --example dock`: - Switch to Input panel → type text → no crash ✅ - Before fix: crash immediately on first keystroke --- Before you mark this PR as ready for review, make sure that you have: - [x] Added a solid test coverage and/or screenshots from doing manual testing - [x] Done a self-review taking into account security and performance aspects - [ ] Aligned any UI changes with the [UI checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) *(N/A — no UI changes)* Release Notes: - Fixed a crash in GPUI when typing into an Input widget inside a cached view ([#50456](https://github.com/zed-industries/zed/issues/50456)) Co-authored-by: Mikayla Maki <mikayla@zed.dev> |
||
|---|---|---|
| .. | ||
| app | ||
| elements | ||
| keymap | ||
| platform | ||
| text_system | ||
| window | ||
| _ownership_and_data_flow.rs | ||
| action.rs | ||
| app.rs | ||
| arena.rs | ||
| asset_cache.rs | ||
| assets.rs | ||
| bounds_tree.rs | ||
| color.rs | ||
| colors.rs | ||
| element.rs | ||
| executor.rs | ||
| geometry.rs | ||
| global.rs | ||
| gpui.rs | ||
| input.rs | ||
| inspector.rs | ||
| interactive.rs | ||
| key_dispatch.rs | ||
| keymap.rs | ||
| path_builder.rs | ||
| platform.rs | ||
| platform_scheduler.rs | ||
| prelude.rs | ||
| profiler.rs | ||
| queue.rs | ||
| scene.rs | ||
| shared_uri.rs | ||
| style.rs | ||
| styled.rs | ||
| subscription.rs | ||
| svg_renderer.rs | ||
| tab_stop.rs | ||
| taffy.rs | ||
| test.rs | ||
| text_system.rs | ||
| util.rs | ||
| view.rs | ||
| window.rs | ||