# project: Fix panic when an inlay hint response outlives its buffer version \(\#61747\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/7b030b500810b04cf5fb4aa5973be99a502d9f36)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 7b030b500810b04cf5fb4aa5973be99a502d9f36

Requested commit: 7b030b500810b04cf5fb4aa5973be99a502d9f36

Commit: 7b030b500810b04cf5fb4aa5973be99a502d9f36

Tree: ab924dbfc0580f5811676165c165c7fd3112325f

Author: Ben Kunkle

Committer: GitHub

## Message

```
project: Fix panic when an inlay hint response outlives its buffer version (#61747)

# Objective

Fix a nightly crash where Zed aborts on a bounds-check panic in the
inlay hint cache.

`LspStore::inlay_hints` captures a `RowChunk` before awaiting the
language server, then reads the hint cache with that chunk's id
afterwards. If the buffer shrank meanwhile, `latest_lsp_data` has
already rebuilt the cache with fewer chunks, so the stale id indexes out
of bounds. Chunks are 50 rows, so the reported crash only needed a
~150-250 line deletion, not a drastic edit.

Regressed in #61523. Nightly only; the regressing commit is in no
release tag, so this never reached preview or stable.

Fixes ZED-AGY
Fixes FR-142

## Solution

- Return an empty result when the buffer version no longer matches, so a
stale chunk id can never index the rebuilt cache. The stale *writes*
were already guarded by this version check; only the read sat outside
it.
- An empty result is already treated as "not fetched", so the chunk is
simply re-requested on the next refresh.

## Testing

`test_inlay_hint_response_after_buffer_shrinks` reproduces the abort
deterministically and passes with the fix. Note that it drives the race
through a fake language server rather than a real one.

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

---

Release Notes:

- N/A
```

## Parents

- [3b79b56201f35dc87788e6a8ed9d432575484769](https://git.cafe/gitcafe/zed/commit/3b79b56201f35dc87788e6a8ed9d432575484769?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/7b030b500810b04cf5fb4aa5973be99a502d9f36?format=markdown)
