Commit 3f906bc957957b40f4fe6836510f770d65d0fe38
1 parent
5d5390ce
Fixed leaks (Closes #2)
Showing
1 changed file
with
8 additions
and
6 deletions
nbt.c
@@ -96,13 +96,13 @@ void destroyTag(Tag* t) { | @@ -96,13 +96,13 @@ void destroyTag(Tag* t) { | ||
96 | free(t->name); | 96 | free(t->name); |
97 | } | 97 | } |
98 | 98 | ||
99 | - if(t->type == TAG_BYTEARRAY || t->type == TAG_INTARRAY || t->type == TAG_LIST) { | ||
100 | - destroyTagList((TagList*)t->payload); | ||
101 | - } else if(t->type == TAG_COMPOUND) { | ||
102 | - destroyTagCompound((TagCompound*)t->payload); | ||
103 | - } | ||
104 | - | ||
105 | if(t->payloadLength) { | 99 | if(t->payloadLength) { |
100 | + | ||
101 | + if(t->type == TAG_BYTEARRAY || t->type == TAG_INTARRAY || t->type == TAG_LIST) { | ||
102 | + destroyTagList((TagList*)t->payload); | ||
103 | + } else if(t->type == TAG_COMPOUND) { | ||
104 | + destroyTagCompound((TagCompound*)t->payload); | ||
105 | + } | ||
106 | free(t->payload); | 106 | free(t->payload); |
107 | } | 107 | } |
108 | } | 108 | } |
@@ -111,12 +111,14 @@ void destroyTagList(TagList* l) { | @@ -111,12 +111,14 @@ void destroyTagList(TagList* l) { | ||
111 | for(int i = 0; i < l->size; ++i) { | 111 | for(int i = 0; i < l->size; ++i) { |
112 | destroyTag(&l->list[i]); | 112 | destroyTag(&l->list[i]); |
113 | } | 113 | } |
114 | + free(l->list); | ||
114 | } | 115 | } |
115 | 116 | ||
116 | void destroyTagCompound(TagCompound* tc) { | 117 | void destroyTagCompound(TagCompound* tc) { |
117 | for(int i = 0; i < tc->numTags; ++i) { | 118 | for(int i = 0; i < tc->numTags; ++i) { |
118 | destroyTag(&tc->list[i]); | 119 | destroyTag(&tc->list[i]); |
119 | } | 120 | } |
121 | + free(tc->list); | ||
120 | } | 122 | } |
121 | 123 | ||
122 | size_t getTypeSize(uint8_t type) { | 124 | size_t getTypeSize(uint8_t type) { |