Thread fix for message ports

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@19364 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-Macdonald 2004-05-17 13:22:52 +00:00
parent 6b8f60d133
commit ab2e1886ef
3 changed files with 21 additions and 1 deletions

View file

@ -1,3 +1,10 @@
2004-05-17 Richard Frith-Macdonald <rfm@gnu.org>
* 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 <rfm@gnu.org>
* Headers/Foundation/Foundation.h: Add NSError.h

View file

@ -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();
}
}

View file

@ -9,6 +9,7 @@
#include "Foundation/NSPort.h"
#include "Foundation/NSFileManager.h"
#include "Foundation/NSValue.h"
#include "Foundation/NSThread.h"
#include <sys/stat.h>
#include <unistd.h>
@ -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();
}
}