Fix bug getting run loop for current thread if it has not already been set.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@26685 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2008-06-18 13:11:11 +00:00
parent 76578244f7
commit e6b7a3ba07
2 changed files with 11 additions and 9 deletions

View file

@ -1,3 +1,8 @@
2008-06-18 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSConnection.m: Fix error getting run loop for current
thread when it has not already been set.
2008-06-16 Richard Frith-Macdonald <rfm@gnu.org> 2008-06-16 Richard Frith-Macdonald <rfm@gnu.org>
* Headers/Additions/GNUstepBase/GSUnion.h: add NSUInteger type as addr * Headers/Additions/GNUstepBase/GSUnion.h: add NSUInteger type as addr

View file

@ -91,9 +91,10 @@ static inline NSRunLoop *
GSRunLoopForThread(NSThread *aThread) GSRunLoopForThread(NSThread *aThread)
{ {
GSRunLoopThreadInfo *info = GSRunLoopInfoForThread(aThread); GSRunLoopThreadInfo *info = GSRunLoopInfoForThread(aThread);
if (info == nil || info->loop == nil) if (info == nil || info->loop == nil)
{ {
if (aThread == nil) if (aThread == nil || aThread == GSCurrentThread())
{ {
return [NSRunLoop currentRunLoop]; return [NSRunLoop currentRunLoop];
} }
@ -1886,8 +1887,7 @@ static void retEncoder (DOContext *ctxt)
const char *type; const char *type;
retval_t retframe; retval_t retframe;
DOContext ctxt; DOContext ctxt;
NSThread *thread = GSCurrentThread(); NSRunLoop *runLoop = GSRunLoopForThread(nil);
NSRunLoop *runLoop = GSRunLoopForThread(thread);
memset(&ctxt, 0, sizeof(ctxt)); memset(&ctxt, 0, sizeof(ctxt));
ctxt.connection = self; ctxt.connection = self;
@ -2030,8 +2030,7 @@ static void retEncoder (DOContext *ctxt)
BOOL needsResponse; BOOL needsResponse;
const char *type; const char *type;
DOContext ctxt; DOContext ctxt;
NSThread *thread = GSCurrentThread(); NSRunLoop *runLoop = GSRunLoopForThread(nil);
NSRunLoop *runLoop = GSRunLoopForThread(thread);
if ([_runLoops indexOfObjectIdenticalTo: runLoop] == NSNotFound) if ([_runLoops indexOfObjectIdenticalTo: runLoop] == NSNotFound)
{ {
@ -2494,8 +2493,7 @@ static void callEncoder (DOContext *ctxt)
*/ */
NS_DURING NS_DURING
{ {
NSThread *thread = GSCurrentThread(); NSRunLoop *runLoop = GSRunLoopForThread(nil);
NSRunLoop *runLoop = GSRunLoopForThread(thread);
NSParameterAssert (_isValid); NSParameterAssert (_isValid);
if ([_runLoops indexOfObjectIdenticalTo: runLoop] == NSNotFound) if ([_runLoops indexOfObjectIdenticalTo: runLoop] == NSNotFound)
@ -2761,8 +2759,7 @@ static void callEncoder (DOContext *ctxt)
NSTimeInterval last_interval = 0.0001; NSTimeInterval last_interval = 0.0001;
NSTimeInterval delay_interval = last_interval; NSTimeInterval delay_interval = last_interval;
NSDate *delay_date = nil; NSDate *delay_date = nil;
NSThread *thread = GSCurrentThread(); NSRunLoop *runLoop = GSRunLoopForThread(nil);
NSRunLoop *runLoop = GSRunLoopForThread(thread);
BOOL isLocked = NO; BOOL isLocked = NO;
/* /*