# HG changeset patch # User Matti Hamalainen # Date 1192716420 -10800 # Node ID a3fc112b10f13c26975482e7997882baeb2a1d7a # Parent ec989c2cde748f57963e3c6946ef285faaf47e0d Fix insertion into playlist for plugins that _don't_ have subtunes. Sorry for breaking it. :D diff -r ec989c2cde74 -r a3fc112b10f1 src/audacious/playlist.c --- a/src/audacious/playlist.c Thu Oct 18 01:30:05 2007 +0300 +++ b/src/audacious/playlist.c Thu Oct 18 17:07:00 2007 +0300 @@ -679,15 +679,18 @@ nsubtunes = tuple->nsubtunes; if (nsubtunes > 0) parent_tuple = tuple; - } else + subtune = 1; + } else { nsubtunes = 0; - - for (subtune = 0; add_flag && subtune < nsubtunes; subtune++) { + subtune = 0; + } + + for (; add_flag && subtune <= nsubtunes; subtune++) { gchar *filename_entry; if (nsubtunes > 0) { filename_entry = g_strdup_printf("%s?%d", filename, - parent_tuple->subtunes ? parent_tuple->subtunes[subtune] : subtune + 1); + parent_tuple->subtunes ? parent_tuple->subtunes[subtune - 1] : subtune); /* We're dealing with subtune, let's ask again tuple information * to plugin, by passing the ?subtune suffix; this way we get @@ -708,7 +711,7 @@ PLAYLIST_LOCK(playlist); - if (pos == -1 && subtune < 1 && nsubtunes < 1) { // the common case + if (pos == -1) { // the common case GList *element; element = g_list_alloc(); element->data = entry; @@ -725,12 +728,9 @@ } else add_flag = FALSE; } - } else { - playlist->entries = g_list_insert(playlist->entries, entry, pos); - } - - PLAYLIST_UNLOCK(playlist); - + } else + playlist->entries = g_list_insert(playlist->entries, entry, pos++); + if (tuple != NULL) { const gchar *formatter = tuple_get_string(tuple, FIELD_FORMATTER, NULL); entry->title = tuple_formatter_make_title_string(tuple, @@ -738,7 +738,10 @@ entry->length = tuple_get_int(tuple, FIELD_LENGTH, NULL); entry->tuple = tuple; } + + PLAYLIST_UNLOCK(playlist); } + if (parent_tuple) tuple_free(parent_tuple);