]> gitweb.factorcode.org Git - factor.git/commitdiff
core-foundation.strings: prevent creating CFString from characters in range 0xd800...
authorJohn Benediktsson <mrjbq7@gmail.com>
Sat, 2 Jun 2012 00:56:34 +0000 (17:56 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sat, 2 Jun 2012 00:56:34 +0000 (17:56 -0700)
basis/core-foundation/strings/strings.factor

index 56f6d1f90af21c8b624d79aa1f9a517821fa0532..65da036049e29364e49a2d5dcabf0259e0d68908 100644 (file)
@@ -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 ;