Skip to content

Fix Utf8MemoryBuilder state after sealing or abandoning - #10378

Merged
michaelstaib merged 1 commit into
mainfrom
mst/utf8-memory-builder-repro
Sep 10, 2026
Merged

michaelstaib merged 1 commit into
mainfrom
mst/utf8-memory-builder-repro

Conversation

@michaelstaib

Copy link
Copy Markdown
Member

No description provided.

Copilot AI lite review requested due to automatic review settings September 10, 2026 06:49
@michaelstaib
michaelstaib merged commit 624f7be into main Sep 10, 2026
16 checks passed
@michaelstaib
michaelstaib deleted the mst/utf8-memory-builder-repro branch September 10, 2026 06:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The change is small and localized, and the added tests/snapshot directly validate the intended sealed/abandoned behavior and content preservation.

Pull request overview

This PR fixes Utf8MemoryBuilder’s internal state transitions so the builder is correctly treated as sealed after calling Seal() or Abandon(), preventing further use of write-related state (like NextIndex) while still preserving the sealed output.

Changes:

  • Set _written = -1 after Seal() and Abandon() to consistently mark the builder as sealed/unusable.
  • Add unit tests verifying NextIndex throws after sealing/abandoning and that sealing preserves previously written content.
  • Add a Markdown snapshot to validate sealed content (WrittenSpan, WrittenMemory, and previously returned segment) remains consistent.
File summaries
File Description
src/HotChocolate/Language/src/Language.Utf8/Utf8MemoryBuilder.cs Marks the builder as sealed after Seal()/Abandon() by setting _written = -1.
src/HotChocolate/Language/test/Language.Tests/Parser/Utf8MemoryBuilderTests.cs Adds regression tests for sealed/abandoned behavior and for content preservation after sealing.
src/HotChocolate/Language/test/Language.Tests/Parser/snapshots/Utf8MemoryBuilderTests.Seal_Should_PreserveWrittenContent_When_BufferContainsData.md Adds snapshot coverage for preserved sealed content.
Review details
  • Files reviewed: 3/3 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@github-actions

Copy link
Copy Markdown
Contributor

Patch coverage

100.0% of changed lines covered (2/2)

File Covered Changed Patch %
…/HotChocolate/Language/src/Language.Utf8/Utf8MemoryBuilder.cs 2 2 100.0% 🟢

Project coverage: 57.9% (288209/497788 lines)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants