Peter Krefting [off-list ref] writes:
Peter Krefting:
quoted
- /* U+FFFE and U+FFFF are guaranteed non-characters. */
- if ((codepoint & 0x1ffffe) == 0xfffe)
+ /* U+xxFFFE and U+xxFFFF are guaranteed non-characters. */
+ if ((codepoint & 0xffffe) == 0xfffe)
+ return bad_offset;
Drats, there is an F too many in the bitmask, it should be:
+ if ((codepoint & 0xfffe) == 0xfffe)
Indeed.
-- >8 --
Subject: [PATCH] commit: typofix for xxFFF[EF] check
We wanted to catch all codepoints that ends with FFFE and FFFF,
not with 0FFFE and 0FFFF.
Noticed and corrected by Peter Krefting.
Signed-off-by: Junio C Hamano <redacted>
---
commit.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/commit.c b/commit.c
index 7dcfeea..38d8979 100644
--- a/commit.c
+++ b/commit.c
@@ -1306,7 +1306,7 @@ static int find_invalid_utf8(const char *buf, int len)
if ((codepoint & 0x1ff800) == 0xd800)
return bad_offset;
/* U+xxFFFE and U+xxFFFF are guaranteed non-characters. */
- if ((codepoint & 0xffffe) == 0xfffe)
+ if ((codepoint & 0xfffe) == 0xfffe)
return bad_offset;
/* So are anything in the range U+FDD0..U+FDEF. */
if (codepoint >= 0xfdd0 && codepoint <= 0xfdef)
--
1.8.4-rc1-129-g1f3472b