summaryrefslogtreecommitdiff
path: root/src/bencode.c
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2011-09-26 17:35:12 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2011-09-26 17:35:12 +0000
commit0a8310af38022a5794c6ec8f0b5a6e745debfdea (patch)
treeb0bb645f30393f00562e3b1f8f876a76f017125a /src/bencode.c
parent167799dd240e946ca94f3cc01ded1b90f69be0fd (diff)
issue 129, issue 130
Diffstat (limited to 'src/bencode.c')
-rw-r--r--src/bencode.c20
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;
}