Skip to content

Commit 71aaba2

Browse files
copumpkinparkera
authored andcommitted
Initialize TSD on macOS even without Swift runtime (#1695)
Without this, you get some really fun to debug segfaults at runtime because (among other things I assume) CFRunLoopGetCurrent queries TSD to avoid doing the heavier _CFRunLoopGet0 (which then sets the TSD to avoid later work). But if we don't initialize the TSD machinery, the _CFGetTSD function returns garbage and we never get a valid CFRunLoopRef
1 parent 94a5abb commit 71aaba2

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

CoreFoundation/Base.subproj/CFRuntime.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -910,7 +910,7 @@ extern void __CFNumberInitialize(void);
910910
extern void __CFCharacterSetInitialize(void);
911911
extern void __CFPFactoryInitialize(void);
912912
extern void __CFPlugInInitialize(void);
913-
#if DEPLOYMENT_TARGET_LINUX || (DEPLOYMENT_TARGET_MACOSX && DEPLOYMENT_RUNTIME_SWIFT)
913+
#if DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_MACOSX
914914
CF_PRIVATE void __CFTSDInitialize(void);
915915
#endif
916916
#if DEPLOYMENT_TARGET_WINDOWS
@@ -1076,7 +1076,7 @@ void __CFInitialize(void) {
10761076
#if DEPLOYMENT_TARGET_WINDOWS
10771077
// Must not call any CF functions
10781078
__CFTSDWindowsInitialize();
1079-
#elif DEPLOYMENT_TARGET_LINUX || (DEPLOYMENT_TARGET_MACOSX && DEPLOYMENT_RUNTIME_SWIFT)
1079+
#elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_MACOSX
10801080
__CFTSDInitialize();
10811081
#endif
10821082
__CFProphylacticAutofsAccess = true;

0 commit comments

Comments
 (0)