Пример #1
0
void
dirtree_delete (dirtree_t * tree)
{
	ASSERT_TREE(tree);
	/* find and remove ourself from our parent's list */
	dirtree_remove (tree);

	/* kill our children */
	while (tree->child != NULL)
		dirtree_delete (tree->child);

	/* free members */
	if (tree->stripped_name != NULL && tree->stripped_name != tree->name )
		free (tree->stripped_name);
	if (tree->name != NULL)
		free (tree->name);
	if (tree->path != NULL)
		free (tree->path);
	if (tree->icon != NULL)
		free (tree->icon);
	if (tree->extension != NULL)
		free (tree->extension);
	if (tree->minipixmap_extension != NULL)
		free (tree->minipixmap_extension);
	free_func_data (&tree->command);
	if (tree->de != NULL)
		unref_desktop_entry(tree->de);
	if (tree->Comment != NULL)
		free (tree->Comment);
	if (tree->FolderReference != NULL)
		free (tree->FolderReference);

	free (tree);
}
Пример #2
0
void DestroyWharfButton (WharfButton ** pbtn)
{
	WharfButton *btn = *pbtn;

	if (btn == NULL)
		return;
	*pbtn = btn->next;

	/* delete members */
	if (btn->title != NULL)
		free (btn->title);
	if (btn->comment != NULL)
		free (btn->comment);

	if (btn->contents) {
		int k;

		for (k = 0; k < btn->contents_num; ++k) {
			char **icon = btn->contents[k].icon;
			FunctionData *function = btn->contents[k].function;

			if (icon != NULL)
				destroy_string_list (icon, 0);

			if (function) {
				free_func_data (function);
				free (function);
			}
		}
		free (btn->contents);
	}


	while (btn->folder)
		DestroyWharfButton (&(btn->folder));

	free (btn);
}