From fddc73286999df7f0e04f00ea36d404687a82ec4 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 19 Jan 2026 18:17:13 +0000 Subject: [PATCH] Escape non-breaking space (0xa0) to ` ` --- core/encoding/entity/entity.odin | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/encoding/entity/entity.odin b/core/encoding/entity/entity.odin index 95a404a81..89155b3a7 100644 --- a/core/encoding/entity/entity.odin +++ b/core/encoding/entity/entity.odin @@ -263,7 +263,7 @@ xml_decode_entity :: proc(entity: string) -> (decoded: [2]rune, rune_count: int, // escape_html escapes special characters like '&' to become '&'. -// It escapes only 5 different characters: & ' < > and ". +// It escapes only 6 different characters: & ' < > " and non-breaking space. @(require_results) escape_html :: proc(s: string, allocator := context.allocator, loc := #caller_location) -> (output: string, was_allocation: bool) { /* @@ -272,6 +272,7 @@ escape_html :: proc(s: string, allocator := context.allocator, loc := #caller_lo < -> < > -> > " -> " // " is shorter than " + 0x6a ->   */ b := transmute([]byte)s @@ -285,6 +286,7 @@ escape_html :: proc(s: string, allocator := context.allocator, loc := #caller_lo case '<': extra_bytes_needed += 3 case '>': extra_bytes_needed += 3 case '"': extra_bytes_needed += 4 + case 0xa0: extra_bytes_needed += 5 } } @@ -307,6 +309,7 @@ escape_html :: proc(s: string, allocator := context.allocator, loc := #caller_lo case '<': x = "<" case '>': x = ">" case '"': x = """ + case 0xa0: x = " " } if x != "" { copy(t[w:], x)