From 0cd7cdaa1fbcebdec54fc0f2a62b40e4d1d70411 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 13 Nov 2019 19:33:58 -0700 Subject: [PATCH] repair `bytes-utf-8-ref` for #\xFFFF result --- pkgs/racket-test-core/tests/racket/unicode.rktl | 6 ++++++ racket/src/racket/src/string.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/unicode.rktl b/pkgs/racket-test-core/tests/racket/unicode.rktl index eb2aa1c6de..92e3e212e6 100644 --- a/pkgs/racket-test-core/tests/racket/unicode.rktl +++ b/pkgs/racket-test-core/tests/racket/unicode.rktl @@ -1724,4 +1724,10 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(test #\uFFFF bytes-utf-8-ref #"\357\277\277" 0) +(test #f bytes-utf-8-ref #"\357\277" 0) +(test #\nul bytes-utf-8-ref #"\357\277" 0 #\nul) + +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + (report-errs) diff --git a/racket/src/racket/src/string.c b/racket/src/racket/src/string.c index 47b57f751d..c09808a9d0 100644 --- a/racket/src/racket/src/string.c +++ b/racket/src/racket/src/string.c @@ -1587,11 +1587,11 @@ byte_string_utf8_ref(int argc, Scheme_Object *argv[]) utf8_decode_x((unsigned char *)chars, istart, ifinish, us, 0, 1, &ipos, &opos, - 0, 0, NULL, 0, perm ? 0xFFFF : 0); + 0, 0, NULL, 0, perm ? 0xFFFFFF : 0); if (opos < 1) return scheme_false; - else if (us[0] == 0xFFFF) + else if (us[0] == 0xFFFFFF) return perm; else return scheme_make_character(us[0]);