43 bug naive colon finder corrupts quoted keys containing colons#46
Merged
nathanjmcdougall merged 4 commits intoMay 25, 2026
Conversation
Use doc.query_exact(route) to locate the value's byte span, then compute the key prefix as source[start_byte..value_start].trim_end(). This eliminates string-searching for the separator colon, which corrupted quoted keys containing colons. Removes find_key_colon entirely. Closes #43
Contributor
There was a problem hiding this comment.
Pull request overview
This pull request fixes a complex replace() regression where quoted mapping keys containing colons (e.g. "http://example.com": 8080) could be corrupted due to naive colon detection when reconstructing the key: prefix during complex replaces.
Changes:
- Update complex replace logic to derive the
key:prefix usingquery_exact()value span boundaries instead of searching for:. - Remove the now-obsolete naive
find_key_colon()helper. - Add a regression test covering quoted keys containing colons during complex replacement.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| tests/test_document.py | Adds a regression test for replacing a quoted key that contains a colon with a complex (mapping) value. |
| src/document.rs | Reworks complex replace prefix/value boundary detection to avoid misidentifying colons inside quoted keys. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Apply is_char_boundary + bounds checks before direct string indexing in parse_value, apply_insert_at, and apply_complex_replace (including the new query_exact value span). Returns recoverable errors instead of panicking on misaligned UTF-8 boundaries.
6cd8445 to
f1fdcee
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.