From 62bf4194c27b14578df1e060300a2885b730034e Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Fri, 1 Jun 2012 17:56:34 -0700 Subject: [PATCH] core-foundation.strings: prevent creating CFString from characters in range 0xd800-0xdfff. --- basis/core-foundation/strings/strings.factor | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/basis/core-foundation/strings/strings.factor b/basis/core-foundation/strings/strings.factor index 56f6d1f90a..65da036049 100644 --- a/basis/core-foundation/strings/strings.factor +++ b/basis/core-foundation/strings/strings.factor @@ -1,9 +1,11 @@ ! Copyright (C) 2008, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.c-types alien.data alien.syntax alien.strings -io.encodings.string kernel sequences byte-arrays -io.encodings.utf8 math core-foundation core-foundation.arrays -core-foundation.data destructors parser fry alien words ; +USING: alien alien.c-types alien.data alien.strings alien.syntax +byte-arrays combinators.short-circuit core-foundation +core-foundation.arrays core-foundation.data destructors fry +io.encodings.string io.encodings.utf8 kernel math math.order +parser sequences words ; + IN: core-foundation.strings TYPEDEF: void* CFStringRef @@ -65,7 +67,7 @@ FUNCTION: CFStringRef CFCopyTypeIDDescription ( CFTypeID type_id ) ; : prepare-CFString ( string -- byte-array ) [ - dup 0x10ffff > + dup { [ 0x10ffff > ] [ 0xd800 0xdfff between? ] } 1|| [ drop 0xfffd ] when ] map utf8 encode ;