Fix inverted error check.
[cascardo/sgp.git] / src / main.c
index 9ce1fb7..4844705 100644 (file)
@@ -23,11 +23,32 @@ int main(int argc, char **argv)
        struct sgp_group *group;
        struct sgp_msg *msg;
        struct sgp_friend *friend;
+       int r;
        /* TODO: access a database here? */
-       group = sgp_group_new();
        friend = sgp_friend_new("Thadeu Cascardo");
+       if (!friend)
+               return 1;
+       group = sgp_group_new("Myself");
+       if (!group)
+               goto out_group;
        msg = sgp_msg_new("New message for you");
-       sgp_group_add_friend(group, friend);
-       sgp_share(group, msg);
-       return 0;
+       if (!msg)
+               goto out_msg;
+       r = sgp_group_add_friend(group, friend);
+       if (r)
+               goto out_add;
+       r = sgp_share(group, msg);
+       sgp_msg_destroy(msg);
+       sgp_group_destroy(group);
+       /* we must only destroy the friend after all group references
+        * are gone */
+       sgp_friend_destroy(friend);
+       return r;
+out_add:
+       sgp_msg_destroy(msg);
+out_msg:
+       sgp_group_destroy(group);
+out_group:
+       sgp_friend_destroy(friend);
+       return 1;
 }