diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-09-26 17:35:12 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-09-26 17:35:12 +0000 |
commit | 0a8310af38022a5794c6ec8f0b5a6e745debfdea (patch) | |
tree | b0bb645f30393f00562e3b1f8f876a76f017125a /src/bencode.c | |
parent | 167799dd240e946ca94f3cc01ded1b90f69be0fd (diff) |
issue 129, issue 130
Diffstat (limited to 'src/bencode.c')
-rw-r--r-- | src/bencode.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/bencode.c b/src/bencode.c index 3eacebb..c9c9b6a 100644 --- a/src/bencode.c +++ b/src/bencode.c @@ -180,12 +180,6 @@ be_node *be_decode(const char *data) return be_decoden(data, strlen(data)); } -static inline void _be_free_str(char *str) -{ - if (str) - g_free(str - sizeof(gint64)); -} - int be_validate_node(be_node * node, int type) { if (!node || node->type != type) @@ -194,6 +188,12 @@ int be_validate_node(be_node * node, int type) return 0; } +static inline void _be_free_str(char *str) +{ + if (str) + g_free(str - sizeof(gint64)); +} + void be_free(be_node * node) { switch (node->type) { @@ -206,9 +206,11 @@ void be_free(be_node * node) case BE_LIST:{ unsigned int i; - for (i = 0; node->val.l[i]; ++i) - be_free(node->val.l[i]); - g_free(node->val.l); + if (node->val.l) { + for (i = 0; node->val.l[i]; ++i) + be_free(node->val.l[i]); + g_free(node->val.l); + } break; } |