From 8b54dc43c8fc7250d7e99a97c4656a14d459ebdd Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 9 Jan 2012 16:41:12 -0700 Subject: [PATCH] fix problem printing symbols with unicode chars Specifically, special-casing letters (such as sigma) were not handled correctly. Merge to 5.2.1 --- collects/tests/racket/print.rktl | 9 +++++++++ src/racket/src/symbol.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/collects/tests/racket/print.rktl b/collects/tests/racket/print.rktl index 567795337b..436137f2c9 100644 --- a/collects/tests/racket/print.rktl +++ b/collects/tests/racket/print.rktl @@ -197,9 +197,18 @@ (f v o) (get-output-string o)))]) (test "Π" in-string write 'Π) ;; UTF-8 encoding can be misinterpreted as having a space + (test "Σ" in-string write 'Σ) ;; interesting because it's special-casing + (test "ς" in-string write 'ς) ;; also special-casing + (test "σ" in-string write 'σ) (test "|a\xA0b|" in-string write (string->symbol "a\xA0b")) + (parameterize ([read-case-sensitive #f]) + (test "|Π|" in-string write 'Π) + (test "|Σ|" in-string write 'Σ) + (test "σ" in-string write 'σ) + (test "|ς|" in-string write 'ς)) (parameterize ([read-accept-bar-quote #f]) (test "Π" in-string write 'Π) + (test "Σ" in-string write 'Σ) (test "a\\\xA0b" in-string write (string->symbol "a\xA0b")))) (report-errs) diff --git a/src/racket/src/symbol.c b/src/racket/src/symbol.c index aafdf9939b..18da94fa27 100644 --- a/src/racket/src/symbol.c +++ b/src/racket/src/symbol.c @@ -617,7 +617,7 @@ const char *scheme_symbol_name_and_size(Scheme_Object *sym, uintptr_t *length, i ul++; } ch = buf[0]; - if (scheme_isspecialcasing(ch)) { + if ((flags & SCHEME_SNF_NEED_CASE) && scheme_isspecialcasing(ch)) { mzchar *rc; buf[1] = 0; rc = scheme_string_recase(buf, 0, 1, 3, 1, NULL);