diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c
index d67e43f36a..70fc8e8ee6 100644
--- a/menu/menu_displaylist.c
+++ b/menu/menu_displaylist.c
@@ -3063,7 +3063,7 @@ static unsigned menu_displaylist_parse_playlists(
       menu_displaylist_info_t *info, bool horizontal)
 {
    size_t i, list_size;
-   struct string_list *str_list = NULL;
+   struct string_list str_list  = {0};
    unsigned count               = 0;
    settings_t *settings         = config_get_ptr();
    const char *path             = info->path;
@@ -3148,23 +3148,22 @@ static unsigned menu_displaylist_parse_playlists(
 #endif
    }
 
-   str_list = dir_list_new(path, NULL, true,
-         show_hidden_files, true, false);
-
-   if (!str_list)
+   string_list_initialize(&str_list);
+   if (!dir_list_initialize(&str_list, path, NULL, true,
+         show_hidden_files, true, false))
       return count;
 
-   dir_list_sort(str_list, true);
+   dir_list_sort(&str_list, true);
 
-   list_size = str_list->size;
+   list_size = str_list.size;
 
    for (i = 0; i < list_size; i++)
    {
-      const char *path             = str_list->elems[i].data;
+      const char *path             = str_list.elems[i].data;
       const char *playlist_file    = NULL;
       enum msg_file_type file_type = FILE_TYPE_NONE;
 
-      switch (str_list->elems[i].attr.i)
+      switch (str_list.elems[i].attr.i)
       {
          case RARCH_DIRECTORY:
             file_type = FILE_TYPE_DIRECTORY;
@@ -3210,7 +3209,7 @@ static unsigned menu_displaylist_parse_playlists(
          count++;
    }
 
-   string_list_free(str_list);
+   string_list_deinitialize(&str_list);
 
    return count;
 }