Old GTK+ versions seemed to be robust about this double free so we seen
that crashes or 100% CPU usages just with modern versions.
This patch takes care of it on two places:
1. Hashes will not be freed by g_hash_table_destroy when empty
2. NULLify the enty variable after free
collect_manager_action_unref(action);
}
g_list_free(entry->add_list);
collect_manager_action_unref(action);
}
g_list_free(entry->add_list);
- g_hash_table_destroy(entry->oldpath_hash);
- g_hash_table_destroy(entry->newpath_hash);
+ if (g_hash_table_size(entry->oldpath_hash) > 0)
+ g_hash_table_destroy(entry->oldpath_hash);
+ else
+ g_hash_table_unref(entry->oldpath_hash);
+ if (g_hash_table_size(entry->newpath_hash) > 0)
+ g_hash_table_destroy(entry->newpath_hash);
+ else
+ g_hash_table_unref(entry->newpath_hash);
}
static void collect_manager_entry_init_data(CollectManagerEntry *entry)
}
static void collect_manager_entry_init_data(CollectManagerEntry *entry)
else
{
collect_manager_entry_free(entry);
else
{
collect_manager_entry_free(entry);