From 2ff434dd80317815b06a754f758ae5df9a108388 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Wed, 17 Jul 2013 18:52:35 -0300 Subject: [PATCH 1/1] Make main program more robust. --- src/main.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index 4bb2b50..0db7962 100644 --- a/src/main.c +++ b/src/main.c @@ -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("Myself"); 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; } -- 2.20.1