3939
4040@interface GTTreeEntry ()
4141@property (nonatomic , assign , readonly ) const git_tree_entry *git_tree_entry;
42+ @property (nonatomic , assign , readonly ) git_tree_entry* entry_to_free;
4243@end
4344
4445@implementation GTTreeEntry
@@ -64,13 +65,30 @@ - (BOOL)isEqualToEntry:(GTTreeEntry *)treeEntry {
6465 return git_tree_entry_cmp (self.git_tree_entry , treeEntry.git_tree_entry ) == 0 ? YES : NO ;
6566}
6667
68+ - (void )dealloc {
69+ if (_entry_to_free != nil ) {
70+ git_tree_entry_free (_entry_to_free);
71+ }
72+ }
73+
6774#pragma mark API
6875
6976- (instancetype )initWithEntry : (const git_tree_entry *)theEntry parentTree : (GTTree *)parent {
7077 NSParameterAssert (theEntry != NULL );
7178 if ((self = [super init ])) {
7279 _git_tree_entry = theEntry;
7380 _tree = parent;
81+ _entry_to_free = nil ;
82+ }
83+ return self;
84+ }
85+
86+ - (instancetype )initWithEntryToFree : (git_tree_entry *)theEntry parentTree : (GTTree *)parent {
87+ NSParameterAssert (theEntry != NULL );
88+ if ((self = [super init ])) {
89+ _git_tree_entry = theEntry;
90+ _tree = parent;
91+ _entry_to_free = theEntry;
7492 }
7593 return self;
7694}
@@ -79,6 +97,10 @@ + (instancetype)entryWithEntry:(const git_tree_entry *)theEntry parentTree:(GTTr
7997 return [[self alloc ] initWithEntry: theEntry parentTree: parent];
8098}
8199
100+ + (instancetype )entryWithEntryToFree : (git_tree_entry *)theEntry parentTree : (GTTree *)parent {
101+ return [[self alloc ] initWithEntryToFree: theEntry parentTree: parent];
102+ }
103+
82104- (NSString *)name {
83105 return @(git_tree_entry_name (self.git_tree_entry ));
84106}
0 commit comments