Fix memory management for CFArrays
parent
a3c23c53ca
commit
58582ab4d9
|
@ -7,4 +7,34 @@ assocs cocoa.enumeration ;
|
||||||
[ V{ } ] [ H{ } >cf &CFRelease [ ] NSFastEnumeration-map ] unit-test
|
[ V{ } ] [ H{ } >cf &CFRelease [ ] NSFastEnumeration-map ] unit-test
|
||||||
[ V{ "A" } ] [ { "A" } >cf &CFRelease plist> ] unit-test
|
[ V{ "A" } ] [ { "A" } >cf &CFRelease plist> ] unit-test
|
||||||
[ H{ { "A" "B" } } ] [ "B" "A" associate >cf &CFRelease plist> ] unit-test
|
[ H{ { "A" "B" } } ] [ "B" "A" associate >cf &CFRelease plist> ] unit-test
|
||||||
|
[ H{ { "A" "B" } } ] [ "B" "A" associate >cf &CFRelease plist> ] unit-test
|
||||||
|
|
||||||
|
[ t ] [
|
||||||
|
{
|
||||||
|
H{ { "DeviceUsagePage" 1 } { "DeviceUsage" 4 } }
|
||||||
|
H{ { "DeviceUsagePage" 1 } { "DeviceUsage" 5 } }
|
||||||
|
H{ { "DeviceUsagePage" 1 } { "DeviceUsage" 6 } }
|
||||||
|
} [ >cf &CFRelease ] [ >cf &CFRelease ] bi
|
||||||
|
[ plist> ] bi@ =
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
[ t ] [
|
||||||
|
{ "DeviceUsagePage" 1 }
|
||||||
|
[ >cf &CFRelease ] [ >cf &CFRelease ] bi
|
||||||
|
[ plist> ] bi@ =
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
[ V{ "DeviceUsagePage" "Yes" } ] [
|
||||||
|
{ "DeviceUsagePage" "Yes" }
|
||||||
|
>cf &CFRelease plist>
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
[ V{ 2.0 1.0 } ] [
|
||||||
|
{ 2.0 1.0 }
|
||||||
|
>cf &CFRelease plist>
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
[ 3.5 ] [
|
||||||
|
3.5 >cf &CFRelease plist>
|
||||||
|
] unit-test
|
||||||
] with-destructors
|
] with-destructors
|
|
@ -1,6 +1,6 @@
|
||||||
! Copyright (C) 2008 Slava Pestov.
|
! Copyright (C) 2008, 2009 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: alien.syntax kernel sequences ;
|
USING: alien.syntax kernel sequences fry ;
|
||||||
IN: core-foundation.arrays
|
IN: core-foundation.arrays
|
||||||
|
|
||||||
TYPEDEF: void* CFArrayRef
|
TYPEDEF: void* CFArrayRef
|
||||||
|
@ -17,6 +17,5 @@ FUNCTION: CFIndex CFArrayGetCount ( CFArrayRef array ) ;
|
||||||
dup CFArrayGetCount [ CFArrayGetValueAtIndex ] with map ;
|
dup CFArrayGetCount [ CFArrayGetValueAtIndex ] with map ;
|
||||||
|
|
||||||
: <CFArray> ( seq -- alien )
|
: <CFArray> ( seq -- alien )
|
||||||
[ f swap length f CFArrayCreateMutable ] keep
|
f over length &: kCFTypeArrayCallBacks CFArrayCreateMutable
|
||||||
[ length ] keep
|
[ '[ [ _ ] 2dip swap CFArraySetValueAtIndex ] each-index ] keep ;
|
||||||
[ [ dupd ] dip CFArraySetValueAtIndex ] 2each ;
|
|
||||||
|
|
Loading…
Reference in New Issue