diff --git a/playlist.c b/playlist.c index d70b22b5c5..72d3919b27 100644 --- a/playlist.c +++ b/playlist.c @@ -2575,21 +2575,18 @@ static bool JSONObjectMemberHandler(void *context, const char *pValue, size_t le return true; } -static void playlist_get_old_format_metadata_value( - char *metadata_line, char *value, size_t len) +static size_t playlist_get_old_format_metadata_value( + char *metadata_line, char *s, size_t len) { char *end = NULL; char *start = strchr(metadata_line, '\"'); - if (!start) - return; - + return 0; start++; if (!(end = strchr(start, '\"'))) - return; - + return 0; *end = '\0'; - strlcpy(value, start, len); + return strlcpy(s, start, len); } static bool playlist_read_file(playlist_t *playlist) @@ -2805,16 +2802,14 @@ static bool playlist_read_file(playlist_t *playlist) line_buf[2], STRLEN_CONST("label_display_mode")) == 0) { - unsigned display_mode; - char display_mode_str[4] = {0}; - - playlist_get_old_format_metadata_value( - line_buf[2], display_mode_str, sizeof(display_mode_str)); - - display_mode = string_to_unsigned(display_mode_str); - - if (display_mode <= LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX) - playlist->label_display_mode = (enum playlist_label_display_mode)display_mode; + char display_mode_str[4]; + if (playlist_get_old_format_metadata_value( + line_buf[2], display_mode_str, sizeof(display_mode_str)) > 0) + { + unsigned display_mode = string_to_unsigned(display_mode_str); + 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 */ @@ -2825,32 +2820,34 @@ static bool playlist_read_file(playlist_t *playlist) line_buf[3], STRLEN_CONST("thumbnail_mode")) == 0) { - char *tok, *save; - char thumbnail_mode_str[8] = {0}; - char *thumbnail_mode_str_cpy = strdup(thumbnail_mode_str); + char thumbnail_mode_str[8]; - playlist_get_old_format_metadata_value( + if (playlist_get_old_format_metadata_value( line_buf[3], thumbnail_mode_str, - sizeof(thumbnail_mode_str)); - - if ((tok = strtok_r(thumbnail_mode_str_cpy, "|", &save))) + sizeof(thumbnail_mode_str)) > 0) { - char *elem0 = strdup(tok); - 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; + char *tok, *save; + char *thumbnail_mode_str_cpy = strdup(thumbnail_mode_str); - /* 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; + if ((tok = strtok_r(thumbnail_mode_str_cpy, "|", &save))) + { + char *elem0 = strdup(tok); + 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 */ @@ -2861,16 +2858,14 @@ static bool playlist_read_file(playlist_t *playlist) line_buf[4], STRLEN_CONST("sort_mode")) == 0) { - unsigned sort_mode; - char sort_mode_str[4] = {0}; - - playlist_get_old_format_metadata_value( - line_buf[4], sort_mode_str, sizeof(sort_mode_str)); - - sort_mode = string_to_unsigned(sort_mode_str); - - if (sort_mode <= PLAYLIST_SORT_MODE_OFF) - playlist->sort_mode = (enum playlist_sort_mode)sort_mode; + char sort_mode_str[4]; + if (playlist_get_old_format_metadata_value( + line_buf[4], sort_mode_str, sizeof(sort_mode_str)) > 0) + { + unsigned sort_mode = string_to_unsigned(sort_mode_str); + if (sort_mode <= PLAYLIST_SORT_MODE_OFF) + playlist->sort_mode = (enum playlist_sort_mode)sort_mode; + } } /* All metadata parsed -> end of file */