markdown: Fix out of range panic in parser (#30510)

For some reason `pulldown_cmark` treats \````` as a codeblock, meaning
that we could end up with an invalid range generated from
`extract_code_block_content_range` (`3..2`)

Closes #30495

Release Notes:

- agent: Fix an edge case where the editor would crash when model
generated malformed markdown
This commit is contained in:
Bennet Bo Fenner 2025-05-11 17:08:37 +02:00 committed by GitHub
parent 1fa19c69a6
commit 06af0310f7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -510,6 +510,9 @@ pub(crate) fn extract_code_block_content_range(text: &str) -> Range<usize> {
if !range.is_empty() && text.ends_with("```") {
range.end -= 3;
}
if range.start > range.end {
range.end = range.start;
}
range
}
@ -686,6 +689,10 @@ mod tests {
let input = "```python\nprint('hello')\nprint('world')\n```";
assert_eq!(extract_code_block_content_range(input), 10..40);
// Malformed input
let input = "`````";
assert_eq!(extract_code_block_content_range(input), 3..3);
}
#[test]