mirror of
https://github.com/libretro/RetroArch
synced 2025-03-20 01:21:03 +00:00
(playlist.c) -
* playlist_get_old_format_metadata_value - now returns size_t * fix bug where string copy was being made with strdup before anything got written to the string
This commit is contained in:
parent
e84ea6082c
commit
955eeed31a
91
playlist.c
91
playlist.c
@ -2575,21 +2575,18 @@ static bool JSONObjectMemberHandler(void *context, const char *pValue, size_t le
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void playlist_get_old_format_metadata_value(
|
static size_t playlist_get_old_format_metadata_value(
|
||||||
char *metadata_line, char *value, size_t len)
|
char *metadata_line, char *s, size_t len)
|
||||||
{
|
{
|
||||||
char *end = NULL;
|
char *end = NULL;
|
||||||
char *start = strchr(metadata_line, '\"');
|
char *start = strchr(metadata_line, '\"');
|
||||||
|
|
||||||
if (!start)
|
if (!start)
|
||||||
return;
|
return 0;
|
||||||
|
|
||||||
start++;
|
start++;
|
||||||
if (!(end = strchr(start, '\"')))
|
if (!(end = strchr(start, '\"')))
|
||||||
return;
|
return 0;
|
||||||
|
|
||||||
*end = '\0';
|
*end = '\0';
|
||||||
strlcpy(value, start, len);
|
return strlcpy(s, start, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool playlist_read_file(playlist_t *playlist)
|
static bool playlist_read_file(playlist_t *playlist)
|
||||||
@ -2805,16 +2802,14 @@ static bool playlist_read_file(playlist_t *playlist)
|
|||||||
line_buf[2],
|
line_buf[2],
|
||||||
STRLEN_CONST("label_display_mode")) == 0)
|
STRLEN_CONST("label_display_mode")) == 0)
|
||||||
{
|
{
|
||||||
unsigned display_mode;
|
char display_mode_str[4];
|
||||||
char display_mode_str[4] = {0};
|
if (playlist_get_old_format_metadata_value(
|
||||||
|
line_buf[2], display_mode_str, sizeof(display_mode_str)) > 0)
|
||||||
playlist_get_old_format_metadata_value(
|
{
|
||||||
line_buf[2], display_mode_str, sizeof(display_mode_str));
|
unsigned display_mode = string_to_unsigned(display_mode_str);
|
||||||
|
if (display_mode <= LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX)
|
||||||
display_mode = string_to_unsigned(display_mode_str);
|
playlist->label_display_mode = (enum playlist_label_display_mode)display_mode;
|
||||||
|
}
|
||||||
if (display_mode <= LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX)
|
|
||||||
playlist->label_display_mode = (enum playlist_label_display_mode)display_mode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get thumbnail modes */
|
/* Get thumbnail modes */
|
||||||
@ -2825,32 +2820,34 @@ static bool playlist_read_file(playlist_t *playlist)
|
|||||||
line_buf[3],
|
line_buf[3],
|
||||||
STRLEN_CONST("thumbnail_mode")) == 0)
|
STRLEN_CONST("thumbnail_mode")) == 0)
|
||||||
{
|
{
|
||||||
char *tok, *save;
|
char thumbnail_mode_str[8];
|
||||||
char thumbnail_mode_str[8] = {0};
|
|
||||||
char *thumbnail_mode_str_cpy = strdup(thumbnail_mode_str);
|
|
||||||
|
|
||||||
playlist_get_old_format_metadata_value(
|
if (playlist_get_old_format_metadata_value(
|
||||||
line_buf[3], thumbnail_mode_str,
|
line_buf[3], thumbnail_mode_str,
|
||||||
sizeof(thumbnail_mode_str));
|
sizeof(thumbnail_mode_str)) > 0)
|
||||||
|
|
||||||
if ((tok = strtok_r(thumbnail_mode_str_cpy, "|", &save)))
|
|
||||||
{
|
{
|
||||||
char *elem0 = strdup(tok);
|
char *tok, *save;
|
||||||
if ((tok = strtok_r(NULL, "|", &save)))
|
char *thumbnail_mode_str_cpy = strdup(thumbnail_mode_str);
|
||||||
{
|
|
||||||
/* Right thumbnail mode */
|
|
||||||
unsigned thumbnail_mode = string_to_unsigned(elem0);
|
|
||||||
if (thumbnail_mode <= PLAYLIST_THUMBNAIL_MODE_LOGOS)
|
|
||||||
playlist->right_thumbnail_mode = (enum playlist_thumbnail_mode)thumbnail_mode;
|
|
||||||
|
|
||||||
/* Left thumbnail mode */
|
if ((tok = strtok_r(thumbnail_mode_str_cpy, "|", &save)))
|
||||||
thumbnail_mode = string_to_unsigned(tok);
|
{
|
||||||
if (thumbnail_mode <= PLAYLIST_THUMBNAIL_MODE_LOGOS)
|
char *elem0 = strdup(tok);
|
||||||
playlist->left_thumbnail_mode = (enum playlist_thumbnail_mode)thumbnail_mode;
|
if ((tok = strtok_r(NULL, "|", &save)))
|
||||||
|
{
|
||||||
|
/* Right thumbnail mode */
|
||||||
|
unsigned thumbnail_mode = string_to_unsigned(elem0);
|
||||||
|
if (thumbnail_mode <= PLAYLIST_THUMBNAIL_MODE_LOGOS)
|
||||||
|
playlist->right_thumbnail_mode = (enum playlist_thumbnail_mode)thumbnail_mode;
|
||||||
|
|
||||||
|
/* Left thumbnail mode */
|
||||||
|
thumbnail_mode = string_to_unsigned(tok);
|
||||||
|
if (thumbnail_mode <= PLAYLIST_THUMBNAIL_MODE_LOGOS)
|
||||||
|
playlist->left_thumbnail_mode = (enum playlist_thumbnail_mode)thumbnail_mode;
|
||||||
|
}
|
||||||
|
free(elem0);
|
||||||
}
|
}
|
||||||
free(elem0);
|
free(thumbnail_mode_str_cpy);
|
||||||
}
|
}
|
||||||
free(thumbnail_mode_str_cpy);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get sort_mode */
|
/* Get sort_mode */
|
||||||
@ -2861,16 +2858,14 @@ static bool playlist_read_file(playlist_t *playlist)
|
|||||||
line_buf[4],
|
line_buf[4],
|
||||||
STRLEN_CONST("sort_mode")) == 0)
|
STRLEN_CONST("sort_mode")) == 0)
|
||||||
{
|
{
|
||||||
unsigned sort_mode;
|
char sort_mode_str[4];
|
||||||
char sort_mode_str[4] = {0};
|
if (playlist_get_old_format_metadata_value(
|
||||||
|
line_buf[4], sort_mode_str, sizeof(sort_mode_str)) > 0)
|
||||||
playlist_get_old_format_metadata_value(
|
{
|
||||||
line_buf[4], sort_mode_str, sizeof(sort_mode_str));
|
unsigned sort_mode = string_to_unsigned(sort_mode_str);
|
||||||
|
if (sort_mode <= PLAYLIST_SORT_MODE_OFF)
|
||||||
sort_mode = string_to_unsigned(sort_mode_str);
|
playlist->sort_mode = (enum playlist_sort_mode)sort_mode;
|
||||||
|
}
|
||||||
if (sort_mode <= PLAYLIST_SORT_MODE_OFF)
|
|
||||||
playlist->sort_mode = (enum playlist_sort_mode)sort_mode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* All metadata parsed -> end of file */
|
/* All metadata parsed -> end of file */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user