From: <dg...@su...> - 2009-02-04 15:39:48
|
Author: Graham Cobb Date: Wed Feb 4 16:37:58 2009 New Revision: 5261 URL: http://www.opensync.org/changeset/5261 Log: Fix double-deallocation crash during exit caused by bad refcounting in opensync_member.c. Modified: trunk/ChangeLog trunk/opensync/group/opensync_member.c trunk/opensync/ipc/opensync_queue.c Modified: trunk/ChangeLog ============================================================================== --- trunk/ChangeLog Wed Feb 4 15:32:36 2009 (r5260) +++ trunk/ChangeLog Wed Feb 4 16:37:58 2009 (r5261) @@ -1,3 +1,12 @@ +2009-02-04 Graham Cobb <g+...@co...> + + * opensync/group/opensync_member.c (osync_member_load): Use osync_member_add_objtype_sink + so references get added properly. + (osync_member_flush_objtypes): Use osync_member_remove_objtype_sink so references get + removed properly + + * opensync/ipc/opensync_queue.c (osync_queue_set_message_handler): Fix bad osync_trace format + 2009-02-03 Graham Cobb <g+...@co...> * tests/ipc-tests/check_ipc.c (ipc_loop_timeout_with_idle): Change test parameters Modified: trunk/opensync/group/opensync_member.c ============================================================================== --- trunk/opensync/group/opensync_member.c Wed Feb 4 15:32:36 2009 (r5260) +++ trunk/opensync/group/opensync_member.c Wed Feb 4 16:37:58 2009 (r5261) @@ -396,7 +396,7 @@ if (!sink) goto error_free_doc; - member->objtypes = g_list_append(member->objtypes, sink); + osync_member_add_objtype_sink(member, sink); } else if (!xmlStrcmp(cur->name, (const xmlChar *)"timeout")) { /* Sink Function Timeout settings for main sink */ if (!member->main_sink) @@ -832,8 +832,7 @@ while (member->objtypes) { OSyncObjTypeSink *sink = member->objtypes->data; - osync_objtype_sink_unref(sink); - member->objtypes = g_list_remove(member->objtypes, member->objtypes->data); + osync_member_remove_objtype_sink(member, sink); } if (member->main_sink) { Modified: trunk/opensync/ipc/opensync_queue.c ============================================================================== --- trunk/opensync/ipc/opensync_queue.c Wed Feb 4 15:32:36 2009 (r5260) +++ trunk/opensync/ipc/opensync_queue.c Wed Feb 4 16:37:58 2009 (r5261) @@ -1169,7 +1169,7 @@ void osync_queue_set_message_handler(OSyncQueue *queue, OSyncMessageHandler handler, gpointer user_data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, queue, handler, user_data); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, queue, handler, user_data); queue->message_handler = handler; queue->user_data = user_data; |