summaryrefslogtreecommitdiff
path: root/src/bencode.c
diff options
context:
space:
mode:
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;
}