Mercurial > dwindows
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 } |