From 988c2a8a8ba4db05179890bd5af482fb21f64992 Mon Sep 17 00:00:00 2001 From: Fred Kiefer Date: Sun, 21 Jun 2009 22:35:23 +0000 Subject: [PATCH] Retain the shared user defaults controller before returning it in initWithCoder:. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28368 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 +++++ Source/NSUserDefaultsController.m | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 11d1d40f3..9ad4f45cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-06-22 Fred Kiefer + + * Source/NSUserDefaultsController.m (-initWithCoder:): Retain the + shared controller before returning it. + 2009-06-22 Fred Kiefer * Source/NSKeyValueBinding.m (GSKeyValueBinding+initialize): diff --git a/Source/NSUserDefaultsController.m b/Source/NSUserDefaultsController.m index 7a3f5ce11..b94784d3e 100644 --- a/Source/NSUserDefaultsController.m +++ b/Source/NSUserDefaultsController.m @@ -200,6 +200,12 @@ static id shared = nil; - (void) dealloc { + if (self == shared) + { + // Should never get here + shared = nil; + } + [[NSNotificationCenter defaultCenter] removeObserver: self]; RELEASE(_values); RELEASE(_defaults); @@ -296,7 +302,7 @@ static id shared = nil; - (void) encodeWithCoder: (NSCoder *)aCoder { if ([aCoder allowsKeyedCoding]) - if (self == [NSUserDefaultsController sharedUserDefaultsController]) + if (self == shared) { [aCoder encodeBool: YES forKey: @"NSSharedInstance"]; return; @@ -311,7 +317,7 @@ static id shared = nil; if ([aDecoder decodeBoolForKey: @"NSSharedInstance"]) { RELEASE(self); - return [NSUserDefaultsController sharedUserDefaultsController]; + return RETAIN([NSUserDefaultsController sharedUserDefaultsController]); } return [super initWithCoder: aDecoder];