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