Skip to content

43 bug naive colon finder corrupts quoted keys containing colons#46

Merged
nathanjmcdougall merged 4 commits into
mainfrom
43-bug-naive-colon-finder-corrupts-quoted-keys-containing-colons
May 25, 2026
Merged

43 bug naive colon finder corrupts quoted keys containing colons#46
nathanjmcdougall merged 4 commits into
mainfrom
43-bug-naive-colon-finder-corrupts-quoted-keys-containing-colons

Conversation

@nathanjmcdougall
Copy link
Copy Markdown
Collaborator

No description provided.

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
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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 using query_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.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

Comment thread src/document.rs
Comment thread src/document.rs
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.
@nathanjmcdougall nathanjmcdougall force-pushed the 43-bug-naive-colon-finder-corrupts-quoted-keys-containing-colons branch from 6cd8445 to f1fdcee Compare May 25, 2026 08:15
@nathanjmcdougall nathanjmcdougall requested a review from Copilot May 25, 2026 08:16
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@nathanjmcdougall nathanjmcdougall merged commit 9bcf237 into main May 25, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: naive colon finder corrupts quoted keys containing colons

2 participants