double locking fixes by David Ayers

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@14428 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-Macdonald 2002-09-10 21:53:34 +00:00
parent dadcd7f022
commit a3fe00f974
3 changed files with 19 additions and 3 deletions

View file

@ -1,3 +1,9 @@
2002-09-10 Richard Frith-Macdonald <rfm@gnu.org>
* Source/GSLocale.m: Double locking check fix
* Source/NSFileManager.m: Double locking check fix
Fixes contributed by David Ayers <d.ayers@inode.at>
2002-09-08 Richard Frith-Macdonald <rfm@gnu.org>
* Headers/gnustep/base/GSIArray.h: Minor optimisation

View file

@ -196,7 +196,14 @@ GSDomainFromDefaultLocale(void)
}
[gnustep_global_lock lock];
saved = [dict mutableCopy];
/*
* Another thread might have been faster in setting the static variable.
* If so, we just drop our dict.
*/
if (saved == nil)
{
saved = [dict mutableCopy];
}
[gnustep_global_lock unlock];
return saved;
#else /* HAVE_LANGINFO_H */

View file

@ -189,12 +189,15 @@ static NSFileManager* defaultManager = nil;
+ (NSFileManager*) defaultManager
{
if (!defaultManager)
if (defaultManager == nil)
{
NS_DURING
{
[gnustep_global_lock lock];
defaultManager = [[self alloc] init];
if (defaultManager == nil)
{
defaultManager = [[self alloc] init];
}
[gnustep_global_lock unlock];
}
NS_HANDLER