From b242175e181b4d9cbcd4087a38c9601ffba7ddc7 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sun, 1 Nov 2009 15:27:55 +0100 Subject: song_save: increased maximum line length to 32 kB The line buffer had a fixed size of 5 kB, and was allocated on the stack. This was too small for some users. As a hotfix, we're increasing the buffer size to 32 kB now, allocated on the heap. In MPD 0.16, we'll switch to dynamic allocation. --- src/song_save.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/song_save.c') diff --git a/src/song_save.c b/src/song_save.c index 8f4e1614d..2d6297f3e 100644 --- a/src/song_save.c +++ b/src/song_save.c @@ -21,7 +21,6 @@ #include "song.h" #include "tag_save.h" #include "directory.h" -#include "path.h" #include "tag.h" #include @@ -113,12 +112,15 @@ matchesAnMpdTagItemKey(char *buffer, enum tag_type *itemType) void readSongInfoIntoList(FILE *fp, struct songvec *sv, struct directory *parent) { - char buffer[MPD_PATH_MAX + 1024]; + enum { + buffer_size = 32768, + }; + char *buffer = g_malloc(buffer_size); struct song *song = NULL; enum tag_type itemType; const char *value; - while (fgets(buffer, sizeof(buffer), fp) && + while (fgets(buffer, buffer_size, fp) && !g_str_has_prefix(buffer, SONG_END)) { g_strchomp(buffer); @@ -156,6 +158,8 @@ void readSongInfoIntoList(FILE *fp, struct songvec *sv, g_error("unknown line in db: %s", buffer); } + g_free(buffer); + if (song) insertSongIntoList(sv, song); } -- cgit v1.2.3