comparison mac/dw.m @ 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
comparison
equal deleted inserted replaced
934:13384e89964c 935:114729f5aedc
1543 1543
1544 if(children) 1544 if(children)
1545 { 1545 {
1546 if(item == pnt) 1546 if(item == pnt)
1547 { 1547 {
1548 NSString *oldstr = [item pointerAtIndex:1];
1549 [oldstr release];
1548 _free_tree_recurse(children, NULL); 1550 _free_tree_recurse(children, NULL);
1551 [node removeObjectAtIndex:z];
1552 count = (int)[node count];
1553 z--;
1549 } 1554 }
1550 else 1555 else if(item == NULL)
1551 { 1556 {
1557 NSString *oldstr = [pnt pointerAtIndex:1];
1558 [oldstr release];
1552 _free_tree_recurse(children, item); 1559 _free_tree_recurse(children, item);
1553 } 1560 }
1554 } 1561 }
1555 } 1562 }
1556 } 1563 }
4882 HTREEITEM API dw_tree_insert_after(HWND handle, HTREEITEM item, char *title, HICN icon, HTREEITEM parent, void *itemdata) 4889 HTREEITEM API dw_tree_insert_after(HWND handle, HTREEITEM item, char *title, HICN icon, HTREEITEM parent, void *itemdata)
4883 { 4890 {
4884 int _locked_by_me = FALSE; 4891 int _locked_by_me = FALSE;
4885 DW_MUTEX_LOCK; 4892 DW_MUTEX_LOCK;
4886 DWTree *tree = handle; 4893 DWTree *tree = handle;
4887 NSString *nstr = [NSString stringWithUTF8String:title]; 4894 NSString *nstr = [[NSString stringWithUTF8String:title] retain];
4888 NSPointerArray *treenode = [NSPointerArray pointerArrayWithWeakObjects]; 4895 NSPointerArray *treenode = [NSPointerArray pointerArrayWithWeakObjects];
4889 [treenode addPointer:icon]; 4896 [treenode addPointer:icon];
4890 [treenode addPointer:nstr]; 4897 [treenode addPointer:nstr];
4891 [treenode addPointer:itemdata]; 4898 [treenode addPointer:itemdata];
4892 [treenode addPointer:NULL]; 4899 [treenode addPointer:NULL];
4959 DW_MUTEX_LOCK; 4966 DW_MUTEX_LOCK;
4960 DWTree *tree = handle; 4967 DWTree *tree = handle;
4961 NSPointerArray *array = (NSPointerArray *)item; 4968 NSPointerArray *array = (NSPointerArray *)item;
4962 if(title) 4969 if(title)
4963 { 4970 {
4964 NSString *nstr = [NSString stringWithUTF8String:title]; 4971 NSString *oldstr = [array pointerAtIndex:1];
4972 NSString *nstr = [[NSString stringWithUTF8String:title] retain];
4965 [array replacePointerAtIndex:1 withPointer:nstr]; 4973 [array replacePointerAtIndex:1 withPointer:nstr];
4974 [oldstr release];
4966 } 4975 }
4967 if(icon) 4976 if(icon)
4968 { 4977 {
4969 [array replacePointerAtIndex:0 withPointer:icon]; 4978 [array replacePointerAtIndex:0 withPointer:icon];
4970 } 4979 }