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]);