Mercurial > dwindows
changeset 935:114729f5aedc
Needed to retain NSStrings in the tree view on Mac to prevent crashes.
These retains also require us to release them during delete and clear.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 26 Apr 2011 10:45:21 +0000 |
parents | 13384e89964c |
children | 4be0c9f963f8 |
files | mac/dw.m |
diffstat | 1 files changed, 12 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mac/dw.m Tue Apr 26 05:51:19 2011 +0000 +++ b/mac/dw.m Tue Apr 26 10:45:21 2011 +0000 @@ -1545,10 +1545,17 @@ { if(item == pnt) { + NSString *oldstr = [item pointerAtIndex:1]; + [oldstr release]; _free_tree_recurse(children, NULL); + [node removeObjectAtIndex:z]; + count = (int)[node count]; + z--; } - else + else if(item == NULL) { + NSString *oldstr = [pnt pointerAtIndex:1]; + [oldstr release]; _free_tree_recurse(children, item); } } @@ -4884,7 +4891,7 @@ int _locked_by_me = FALSE; DW_MUTEX_LOCK; DWTree *tree = handle; - NSString *nstr = [NSString stringWithUTF8String:title]; + NSString *nstr = [[NSString stringWithUTF8String:title] retain]; NSPointerArray *treenode = [NSPointerArray pointerArrayWithWeakObjects]; [treenode addPointer:icon]; [treenode addPointer:nstr]; @@ -4961,8 +4968,10 @@ NSPointerArray *array = (NSPointerArray *)item; if(title) { - NSString *nstr = [NSString stringWithUTF8String:title]; + NSString *oldstr = [array pointerAtIndex:1]; + NSString *nstr = [[NSString stringWithUTF8String:title] retain]; [array replacePointerAtIndex:1 withPointer:nstr]; + [oldstr release]; } if(icon) {