From cf4691ee879dfa16c72cf806be5ebed9405b1de1 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 4 May 2020 07:18:05 -0600 Subject: [PATCH] cs: fix allocation mode for `_string/utf-16` Closes #3153 --- pkgs/racket-test-core/tests/racket/foreign-test.rktl | 3 +++ racket/src/cs/rumble/foreign.ss | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/racket-test-core/tests/racket/foreign-test.rktl b/pkgs/racket-test-core/tests/racket/foreign-test.rktl index 830d947be1..2b924a7ef3 100644 --- a/pkgs/racket-test-core/tests/racket/foreign-test.rktl +++ b/pkgs/racket-test-core/tests/racket/foreign-test.rktl @@ -745,6 +745,9 @@ ;; Check a corner of UTF-16 conversion: (test "\U171D3" cast (cast "\U171D3" _string/utf-16 _gcpointer) _gcpointer _string/utf-16)) +;; strings can be cast +(test "heλλo" cast (cast "he\u3bb\u3bbo" _string/utf-16 _gcpointer) _gcpointer _string/utf-16) + ;; check async: (when test-async? (define (check async like) diff --git a/racket/src/cs/rumble/foreign.ss b/racket/src/cs/rumble/foreign.ss index 145cdac867..c6aa9f1b45 100644 --- a/racket/src/cs/rumble/foreign.ss +++ b/racket/src/cs/rumble/foreign.ss @@ -674,7 +674,10 @@ (define (ctype-malloc-mode c) (let ([t (ctype-our-rep c)]) - (if (or (eq? t 'gcpointer) (eq? t 'scheme)) + (if (or (eq? t 'gcpointer) + (eq? t 'scheme) + (eq? t 'string/ucs-4) + (eq? t 'string/utf-16)) 'nonatomic 'atomic)))