diff options
author | Alex Merry <dev@randomguy3.me.uk> | 2013-03-25 18:15:11 +0000 |
---|---|---|
committer | Alex Merry <dev@randomguy3.me.uk> | 2013-03-25 18:36:52 +0000 |
commit | 0f969b6ced7e9ebcbe4bc4e17867ff32d67f27bb (patch) | |
tree | 9632ffa948332d8636c15537cb19356781a215ec /tikzit/src/common | |
parent | 1b83e14b1f5640881deeb03c1d11df5197746b64 (diff) |
Catch some memory leaks
Memory usage on Linux no longer shoots up after running the tikz parser
a handful of times.
Diffstat (limited to 'tikzit/src/common')
-rw-r--r-- | tikzit/src/common/Edge.m | 4 | ||||
-rw-r--r-- | tikzit/src/common/GraphChange.m | 39 | ||||
-rw-r--r-- | tikzit/src/common/GraphElementProperty.h | 4 | ||||
-rw-r--r-- | tikzit/src/common/GraphElementProperty.m | 17 | ||||
-rw-r--r-- | tikzit/src/common/Node.m | 1 | ||||
-rw-r--r-- | tikzit/src/common/tikzparser.ym | 6 |
6 files changed, 43 insertions, 28 deletions
diff --git a/tikzit/src/common/Edge.m b/tikzit/src/common/Edge.m index dfc505c..945503f 100644 --- a/tikzit/src/common/Edge.m +++ b/tikzit/src/common/Edge.m @@ -640,6 +640,10 @@ } - (void)dealloc { + [source removeObserver:self + forKeyPath:@"style"]; + [target removeObserver:self + forKeyPath:@"style"]; [source release]; [target release]; [data release]; diff --git a/tikzit/src/common/GraphChange.m b/tikzit/src/common/GraphChange.m index cb95332..239ae23 100644 --- a/tikzit/src/common/GraphChange.m +++ b/tikzit/src/common/GraphChange.m @@ -35,6 +35,29 @@ return [super init]; } +- (void)dealloc { + [affectedNodes release]; + [affectedEdges release]; + [nodeRef release]; + [edgeRef release]; + [oldNode release]; + [nwNode release]; + [oldEdge release]; + [nwEdge release]; + [oldNodeTable release]; + [nwNodeTable release]; + [oldEdgeTable release]; + [nwEdgeTable release]; + [oldGraphData release]; + [nwGraphData release]; + [oldNodeOrder release]; + [nwNodeOrder release]; + [oldEdgeOrder release]; + [nwEdgeOrder release]; + + [super dealloc]; +} + @synthesize changeType; @synthesize shiftPoint, horizontal; @synthesize affectedEdges, affectedNodes; @@ -115,22 +138,6 @@ return [inverse autorelease]; } -- (void)dealloc { - [affectedNodes release]; - [affectedEdges release]; - [nodeRef release]; - [oldNode release]; - [nwNode release]; - [edgeRef release]; - [oldEdge release]; - [oldNodeTable release]; - [nwNodeTable release]; - [oldEdgeTable release]; - [nwEdgeTable release]; - - [super dealloc]; -} - + (GraphChange*)graphAdditionWithNodes:(NSSet *)ns edges:(NSSet *)es { GraphChange *gc = [[GraphChange alloc] init]; [gc setChangeType:GraphAddition]; diff --git a/tikzit/src/common/GraphElementProperty.h b/tikzit/src/common/GraphElementProperty.h index 029e7f3..057cdbb 100644 --- a/tikzit/src/common/GraphElementProperty.h +++ b/tikzit/src/common/GraphElementProperty.h @@ -35,8 +35,8 @@ BOOL isKeyMatch; } -@property (readwrite,retain) NSString *key; -@property (readwrite,retain) NSString *value; +@property (copy) NSString *key; +@property (copy) NSString *value; @property (readonly) BOOL isAtom; @property (readonly) BOOL isKeyMatch; diff --git a/tikzit/src/common/GraphElementProperty.m b/tikzit/src/common/GraphElementProperty.m index 5a19ace..3cf6632 100644 --- a/tikzit/src/common/GraphElementProperty.m +++ b/tikzit/src/common/GraphElementProperty.m @@ -41,9 +41,7 @@ self = [super init]; if (self) { [self setKey:n]; - [self setValue:nil]; isAtom = YES; - isKeyMatch = NO; } return self; } @@ -53,8 +51,6 @@ if (self) { [self setKey:k]; [self setValue:v]; - isAtom = NO; - isKeyMatch = NO; } return self; } @@ -63,13 +59,17 @@ self = [super init]; if (self) { [self setKey:k]; - [self setValue:nil]; - isAtom = NO; isKeyMatch = YES; } return self; } +- (void) dealloc { + [key release]; + [value release]; + [super dealloc]; +} + - (void)setValue:(NSString *)v { if (value != v) { [value release]; @@ -87,11 +87,12 @@ - (void)setKey:(NSString *)k { - if (k == nil) k = @""; // don't allow nil keys if (key != k) { [key release]; - key = [k retain]; + key = [k copy]; } + if (key == nil) + key = @""; // don't allow nil keys } - (NSString*)key { diff --git a/tikzit/src/common/Node.m b/tikzit/src/common/Node.m index e564e5d..8c64b6b 100644 --- a/tikzit/src/common/Node.m +++ b/tikzit/src/common/Node.m @@ -53,6 +53,7 @@ [name release]; [style release]; [data release]; + [label release]; [super dealloc]; } diff --git a/tikzit/src/common/tikzparser.ym b/tikzit/src/common/tikzparser.ym index d0ced92..794b06d 100644 --- a/tikzit/src/common/tikzparser.ym +++ b/tikzit/src/common/tikzparser.ym @@ -148,7 +148,7 @@ val: PROPSTRING { $$ = $1; } | DELIMITEDSTRING { $$ = $1; }; nodename: "(" REFSTRING ")" { $$ = $2; }; node: "\\node" optproperties nodename "at" COORD DELIMITEDSTRING ";" { - Node *node = [Node node]; + Node *node = [[Node alloc] init]; if ($2) [node setData:$2]; [node setName:$3]; @@ -156,6 +156,7 @@ node: "\\node" optproperties nodename "at" COORD DELIMITEDSTRING ";" [node setLabel:$6]; [assembler addNodeToMap:node]; [[assembler graph] addNode:node]; + [node release]; }; optanchor: { $$ = nil; } | "." REFSTRING { $$ = $2; }; @@ -178,7 +179,7 @@ optedgenode: } edge: "\\draw" optproperties noderef "to" optedgenode optnoderef ";" { - Edge *edge = [Edge edge]; + Edge *edge = [[Edge alloc] init]; if ($2) [edge setData:$2]; [edge setSource:$3.node]; @@ -193,6 +194,7 @@ edge: "\\draw" optproperties noderef "to" optedgenode optnoderef ";" } [edge setAttributesFromData]; [[assembler graph] addEdge:edge]; + [edge release]; }; ignoreprop: val | val "=" val; |