From 871848b6e856244b3396999cf07e24d2397142e5 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Fri, 14 Dec 2012 19:03:23 +0100 Subject: Make messaging_menu_app_remove_message() work for messages with a ref count of 1 This can happen if noone outside of MessagingMenuApp holds a reference to the message and somebody calls remove_message() with a pointer they got from _get_message() (which doesn't return a ref). messaging_menu_app_remove_message_by_id() really wants a valid 'id' pointer during its lifetime. --- libmessaging-menu/messaging-menu-app.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'libmessaging-menu') diff --git a/libmessaging-menu/messaging-menu-app.c b/libmessaging-menu/messaging-menu-app.c index 7fc9106..a0180cb 100644 --- a/libmessaging-menu/messaging-menu-app.c +++ b/libmessaging-menu/messaging-menu-app.c @@ -1397,7 +1397,11 @@ void messaging_menu_app_remove_message (MessagingMenuApp *app, MessagingMenuMessage *msg) { + /* take a ref of @msg here to make sure the pointer returned by + * _get_id() is valid for the duration of remove_message_by_id. */ + g_object_ref (msg); messaging_menu_app_remove_message_by_id (app, messaging_menu_message_get_id (msg)); + g_object_unref (msg); } /** -- cgit v1.2.3