diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c
index 0755baea19..ac461736f3 100644
--- a/menu/drivers/xmb.c
+++ b/menu/drivers/xmb.c
@@ -1875,18 +1875,22 @@ static void xmb_list_cache(bool horizontal, unsigned action)
 
    stack_size = menu->menu_list->menu_stack->size;
 
-   strlcpy(menu->menu_list->menu_stack->list[stack_size-1].label,
-         "Main Menu", PATH_MAX_LENGTH);
-   menu->menu_list->menu_stack->list[stack_size-1].type = 
-      MENU_SETTINGS;
+   if (menu->menu_list->menu_stack->list[stack_size - 1].label)
+	   free(menu->menu_list->menu_stack->list[stack_size - 1].label);
+   menu->menu_list->menu_stack->list[stack_size - 1].label = NULL;
 
    if (menu->categories.selection_ptr == 0)
-      return;
-
-   strlcpy(menu->menu_list->menu_stack->list[stack_size-1].label,
-         "Horizontal Menu", PATH_MAX_LENGTH);
-   menu->menu_list->menu_stack->list[stack_size-1].type = 
+   {
+	   menu->menu_list->menu_stack->list[stack_size - 1].label = strdup("Main Menu");
+	   menu->menu_list->menu_stack->list[stack_size - 1].type = 
+      MENU_SETTINGS;
+   }
+   else
+   {
+	   menu->menu_list->menu_stack->list[stack_size - 1].label = strdup("Horizontal Menu");
+	   menu->menu_list->menu_stack->list[stack_size - 1].type = 
       MENU_SETTING_HORIZONTAL_MENU;
+   }
 }
 
 static void xmb_context_destroy(void)