mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-23 09:04:13 +00:00
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:
parent
6b8f60d133
commit
ab2e1886ef
3 changed files with 21 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue