diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 029db318e5..f2d7d9c795 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -2298,9 +2298,10 @@ static void materialui_refresh_playlist_icon_list( for (i = 0; i < file_list->size; i++) { + size_t _len; const char *path = file_list->elems[i].data; const char *playlist_file = NULL; - char image_file[PATH_MAX_LENGTH]; + char image_file[256]; /* We used malloc() to create the icons * array - ensure struct members are @@ -2331,12 +2332,12 @@ static void materialui_refresh_playlist_icon_list( continue; /* Playlist is valid - generate image file name */ - strlcpy(image_file, playlist_file, sizeof(image_file)); - path_remove_extension(image_file); - strlcat(image_file, FILE_PATH_PNG_EXTENSION, sizeof(image_file)); - - if (string_is_empty(image_file)) - continue; + _len = strlcpy(image_file, + playlist_file, sizeof(image_file)); + /* Manually rename extension 'lpl' to 'png' in string */ + image_file[_len-3] = 'p'; + image_file[_len-2] = 'n'; + image_file[_len-1] = 'g'; /* All good - cache paths */ mui->textures.playlist.icons[i].playlist_file = strdup(playlist_file); diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 52866040e7..c14045011d 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -2299,7 +2299,7 @@ static void xmb_context_reset_horizontal_list( if (string_ends_with_size(path, ".lpl", strlen(path), STRLEN_CONST(".lpl"))) { - size_t len; + size_t len, _len; struct texture_image ti; char sysname[PATH_MAX_LENGTH]; char texturepath[PATH_MAX_LENGTH]; @@ -2308,11 +2308,17 @@ static void xmb_context_reset_horizontal_list( /* Add current node to playlist database name map */ RHMAP_SET_STR(xmb->playlist_db_node_map, path, node); - fill_pathname_base(sysname, path, sizeof(sysname)); - path_remove_extension(sysname); - - len = fill_pathname_join_special(texturepath, iconpath, sysname, - sizeof(texturepath)); + _len = fill_pathname_base( + sysname, path, sizeof(sysname)); + /* Manually strip the extension (and dot) from sysname */ + sysname[_len-4] = + sysname[_len-3] = + sysname[_len-2] = + sysname[_len-1] = '\0'; + _len = _len-4; + len = fill_pathname_join_special( + texturepath, iconpath, sysname, + sizeof(texturepath)); texturepath[len ] = '.'; texturepath[len+1] = 'p'; texturepath[len+2] = 'n'; @@ -2349,7 +2355,21 @@ static void xmb_context_reset_horizontal_list( image_texture_free(&ti); } - strlcat(sysname, "-content.png", sizeof(sysname)); + /* Manually append '-content.png' to end of sysname string */ + sysname[_len ] = '-'; + sysname[_len+1 ] = 'c'; + sysname[_len+2 ] = 'o'; + sysname[_len+3 ] = 'n'; + sysname[_len+4 ] = 't'; + sysname[_len+5 ] = 'e'; + sysname[_len+6 ] = 'n'; + sysname[_len+7 ] = 't'; + sysname[_len+8 ] = '.'; + sysname[_len+9 ] = 'p'; + sysname[_len+10] = 'n'; + sysname[_len+11] = 'g'; + sysname[_len+12] = '\0'; + /* Assemble new icon path */ fill_pathname_join_special(content_texturepath, iconpath, sysname, sizeof(content_texturepath));