diff --git a/ChangeLog b/ChangeLog index fe5b1ffb4..f86a69e5d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-05-17 Richard Frith-Macdonald + + * Source/NSMessagePort.m: + * Source/NSMessagePortNameServer.m: Fix based on emailed patch + by Roland Schwingel ... ensure we have a thread registered in + atexit functions. + 2004-05-17 Richard Frith-Macdonald * Headers/Foundation/Foundation.h: Add NSError.h diff --git a/Source/NSMessagePort.m b/Source/NSMessagePort.m index 9a6b73ddd..4334ba401 100644 --- a/Source/NSMessagePort.m +++ b/Source/NSMessagePort.m @@ -1155,6 +1155,8 @@ static void clean_up_sockets(void) NSMessagePort *port; NSData *name; NSMapEnumerator mEnum; + BOOL unknownThread = GSRegisterCurrentThread(); + CREATE_AUTORELEASE_POOL(arp); mEnum = NSEnumerateMapTable(messagePortMap); while (NSNextMapEnumeratorPair(&mEnum, (void *)&name, (void *)&port)) @@ -1163,6 +1165,11 @@ static void clean_up_sockets(void) unlink([name bytes]); } NSEndMapTableEnumeration(&mEnum); + DESTROY(arp); + if (unknownThread == YES) + { + GSUnregisterCurrentThread(); + } } diff --git a/Source/NSMessagePortNameServer.m b/Source/NSMessagePortNameServer.m index 7fd8bed69..ddaa0d2a7 100644 --- a/Source/NSMessagePortNameServer.m +++ b/Source/NSMessagePortNameServer.m @@ -9,6 +9,7 @@ #include "Foundation/NSPort.h" #include "Foundation/NSFileManager.h" #include "Foundation/NSValue.h" +#include "Foundation/NSThread.h" #include #include @@ -54,10 +55,11 @@ static NSMapTable portToNamesMap; static void clean_up_names(void) { - CREATE_AUTORELEASE_POOL(arp); NSMapEnumerator mEnum; NSMessagePort *port; NSString *name; + BOOL unknownThread = GSRegisterCurrentThread(); + CREATE_AUTORELEASE_POOL(arp); mEnum = NSEnumerateMapTable(portToNamesMap); while (NSNextMapEnumeratorPair(&mEnum, (void *)&port, (void *)&name)) @@ -66,6 +68,10 @@ static void clean_up_names(void) } NSEndMapTableEnumeration(&mEnum); DESTROY(arp); + if (unknownThread == YES) + { + GSUnregisterCurrentThread(); + } }