From cc3838db4d82a1bb46ee90f1eb00aa399b74ae40 Mon Sep 17 00:00:00 2001 From: rfm Date: Sun, 24 May 2009 04:22:09 +0000 Subject: [PATCH] Fix race condition git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28298 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 +++++ Source/NSThread.m | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 2d596e4f2..fd5801940 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-05-24 Richard Frith-Macdonald + + * Source/NSThread.m: Use lock to prevent race condition setting up + runloop info for thread. + 2009-05-23 Richard Frith-Macdonald * Source/NSKeyValueObserving.m: diff --git a/Source/NSThread.m b/Source/NSThread.m index 5f9a15c3c..a9db1a75c 100644 --- a/Source/NSThread.m +++ b/Source/NSThread.m @@ -1057,7 +1057,12 @@ GSRunLoopInfoForThread(NSThread *aThread) } if (((NSThread_ivars*)aThread)->_runLoopInfo == nil) { - ((NSThread_ivars*)aThread)->_runLoopInfo = [GSRunLoopThreadInfo new]; + [gnustep_global_lock lock]; + if (((NSThread_ivars*)aThread)->_runLoopInfo == nil) + { + ((NSThread_ivars*)aThread)->_runLoopInfo = [GSRunLoopThreadInfo new]; + } + [gnustep_global_lock unlock]; } info = ((NSThread_ivars*)aThread)->_runLoopInfo; return info;