Yeah I'd rather not leak anything. I think i would rather just move to g_hash_table_new_full() in events_init() and just supply a key destroy function instead of adding another member to the struct.