Fix core dump from lst commit. Sorry!

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@25726 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Fred Kiefer 2007-12-12 08:16:23 +00:00
parent 5966ffcd3f
commit f9bcb8cc27
2 changed files with 23 additions and 9 deletions

View file

@ -1,3 +1,8 @@
2007-12-12 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSKeyValueBinding.m (GSBindingUnbindAll): Return if table
doesn't exist.
2007-12-11 Fred Kiefer <FredKiefer@gmx.de>
* Headers/AppKit/NSKeyValueBinding.h,

View file

@ -298,11 +298,14 @@ void GSBindingReleaseLock()
[bindingLock unlock];
}
NSMutableDictionary * GSBindingListForObject(id object)
NSMutableDictionary *GSBindingListForObject(id object)
{
NSMutableDictionary * list;
NSMutableDictionary *list;
list = (NSMutableDictionary *) NSMapGet(objectTable, (void *)object);
if (!objectTable)
return nil;
list = (NSMutableDictionary *)NSMapGet(objectTable, (void *)object);
if (list == nil)
{
list = [NSMutableDictionary dictionary];
@ -315,16 +318,22 @@ void GSBindingUnbindAll(id object)
{
NSEnumerator *enumerator;
NSString *binding;
NSArray *bindings;
NSDictionary *list;
if (!objectTable)
return;
[bindingLock lock];
bindings = [(GSBindingListForObject(object)) allKeys];
enumerator = [bindings objectEnumerator];
while ((binding = [enumerator nextObject]))
list = (NSDictionary *)NSMapGet(objectTable, (void *)object);
if (list != nil)
{
[object unbind: binding];
enumerator = [list keyEnumerator];
while ((binding = [enumerator nextObject]))
{
[object unbind: binding];
}
NSMapRemove(objectTable, (void *)object);
}
NSMapRemove(objectTable, (void *)object);
[bindingLock unlock];
}