Comment 40 for bug 204775

running e-d-s under valgrind showed this error

==6873== Invalid free() / delete / delete[]
==6873== at 0x4C22B2E: free (vg_replace_malloc.c:323)
==6873== by 0x8FB3165: g_slice_free_chain_with_offset (gslice.c:961)
==6873== by 0xEC9AC05: add_source (e-cal-backend-contacts.c:108)
==6873== by 0xEC9AD6A: source_group_added_cb (e-cal-backend-contacts.c:299)
==6873== by 0xEC9AE9E: e_cal_backend_contacts_open (e-cal-backend-contacts.c:751)
==6873== by 0x69D415A: e_cal_backend_sync_open (e-cal-backend-sync.c:186)
==6873== by 0x69D425F: _e_cal_backend_open (e-cal-backend-sync.c:706)
==6873== by 0x8292755: ORBit_small_invoke_adaptor (orbit-small.c:844)
==6873== by 0x82A191D: ORBit_POAObject_handle_request (poa.c:1351)
==6873== by 0x82A1ED9: ORBit_POAObject_invoke_incoming_request (poa.c:1421)
==6873== by 0x828BAB4: giop_thread_queue_process (giop.c:771)
==6873== by 0x828C24E: giop_request_handler_thread (giop.c:481)
==6873== by 0x8FBEBF6: g_thread_pool_thread_proxy (gthreadpool.c:265)
==6873== by 0x8FBD053: g_thread_create_proxy (gthread.c:635)
==6873== by 0x9A6D3F6: start_thread (in /lib/libpthread-2.7.so)
==6873== by 0x9D5AB2C: clone (in /lib/libc-2.7.so)
==6873== Address 0xcf36608 is 0 bytes inside a block of size 24 free'd
==6873== at 0x4C22B2E: free (vg_replace_malloc.c:323)
==6873== by 0x8FB3165: g_slice_free_chain_with_offset (gslice.c:961)
==6873== by 0xEC9ABEB: add_source (e-cal-backend-contacts.c:105)
==6873== by 0xEC9AD6A: source_group_added_cb (e-cal-backend-contacts.c:299)
==6873== by 0xEC9AE9E: e_cal_backend_contacts_open (e-cal-backend-contacts.c:751)
==6873== by 0x69D415A: e_cal_backend_sync_open (e-cal-backend-sync.c:186)
==6873== by 0x69D425F: _e_cal_backend_open (e-cal-backend-sync.c:706)
==6873== by 0x8292755: ORBit_small_invoke_adaptor (orbit-small.c:844)
==6873== by 0x82A191D: ORBit_POAObject_handle_request (poa.c:1351)
==6873== by 0x82A1ED9: ORBit_POAObject_invoke_incoming_request (poa.c:1421)
==6873== by 0x828BAB4: giop_thread_queue_process (giop.c:771)
==6873== by 0x828C24E: giop_request_handler_thread (giop.c:481)
==6873== by 0x8FBEBF6: g_thread_pool_thread_proxy (gthreadpool.c:265)
==6873== by 0x8FBD053: g_thread_create_proxy (gthread.c:635)
==6873== by 0x9A6D3F6: start_thread (in /lib/libpthread-2.7.so)
==6873== by 0x9D5AB2C: clone (in /lib/libc-2.7.so)

the corresponding code has an obvious double free on the fields variable