Index: uspace/lib/tbarcfg/private/tbarcfg.h
===================================================================
--- uspace/lib/tbarcfg/private/tbarcfg.h	(revision 69935a8b06e9ed4ccca358eb9eb338c40e780362)
+++ uspace/lib/tbarcfg/private/tbarcfg.h	(revision 8a43f0183ea262b1d2745eafe4461bc09f21a33e)
@@ -64,6 +64,7 @@
 };
 
-extern errno_t smenu_entry_create(tbarcfg_t *, sif_node_t *, const char *,
+extern errno_t smenu_entry_new(tbarcfg_t *, sif_node_t *, const char *,
     const char *);
+extern void smenu_entry_delete(smenu_entry_t *);
 
 #endif
Index: uspace/lib/tbarcfg/src/tbarcfg.c
===================================================================
--- uspace/lib/tbarcfg/src/tbarcfg.c	(revision 69935a8b06e9ed4ccca358eb9eb338c40e780362)
+++ uspace/lib/tbarcfg/src/tbarcfg.c	(revision 8a43f0183ea262b1d2745eafe4461bc09f21a33e)
@@ -101,5 +101,5 @@
 		}
 
-		rc = smenu_entry_create(tbcfg, nentry, caption, cmd);
+		rc = smenu_entry_new(tbcfg, nentry, caption, cmd);
 		if (rc != EOK)
 			goto error;
@@ -124,5 +124,14 @@
 void tbarcfg_close(tbarcfg_t *tbcfg)
 {
+	smenu_entry_t *entry;
+
+	entry = tbarcfg_smenu_first(tbcfg);
+	while (entry != NULL) {
+		smenu_entry_delete(entry);
+		entry = tbarcfg_smenu_first(tbcfg);
+	}
+
 	(void)sif_close(tbcfg->repo);
+	free(tbcfg);
 }
 
@@ -255,5 +264,5 @@
 }
 
-/** Create a start menu entry and append it to the start menu (internal).
+/** Allocate a start menu entry and append it to the start menu (internal).
  *
  * This only creates the entry in memory, but does not update the repository.
@@ -264,5 +273,5 @@
  * @param cmd Command to run
  */
-errno_t smenu_entry_create(tbarcfg_t *smenu, sif_node_t *nentry,
+errno_t smenu_entry_new(tbarcfg_t *smenu, sif_node_t *nentry,
     const char *caption, const char *cmd)
 {
@@ -305,4 +314,19 @@
 }
 
+/** Delete start menu entry.
+ *
+ * This only deletes the entry from, but does not update the
+ * repository.
+ *
+ * @param entry Start menu entry
+ */
+void smenu_entry_delete(smenu_entry_t *entry)
+{
+	list_remove(&entry->lentries);
+	free(entry->caption);
+	free(entry->cmd);
+	free(entry);
+}
+
 /** @}
  */
