summaryrefslogtreecommitdiff
path: root/playlist.c
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2009-12-30 20:00:50 +0100
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2009-12-30 20:00:50 +0100
commitd8a53a3b7416022bfbf2309def6c5cf1bbf74f32 (patch)
treec77f83ddd943b9433902245f9abe334148f60219 /playlist.c
parent816b2d30ae921bd8348f467c987a45fc3b65f527 (diff)
fixed loading of playlists with huge matadata blocks
Diffstat (limited to 'playlist.c')
-rw-r--r--playlist.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/playlist.c b/playlist.c
index e9022a81..1427fe02 100644
--- a/playlist.c
+++ b/playlist.c
@@ -1467,17 +1467,20 @@ pl_load (const char *fname) {
goto load_fail;
}
if (!l || l >= 1024) {
- goto load_fail;
- }
- if (fread (value, 1, l, fp) != l) {
- goto load_fail;
+ // skip
+ fseek (fp, l, SEEK_CUR);
}
- value[l] = 0;
- //printf ("%s=%s\n", key, value);
- for (int n = 0; valid_keys[n]; n++) {
- if (!strcmp (valid_keys[n], key)) {
- pl_add_meta (it, valid_keys[n], value);
- break;
+ else {
+ if (fread (value, 1, l, fp) != l) {
+ goto load_fail;
+ }
+ value[l] = 0;
+ //printf ("%s=%s\n", key, value);
+ for (int n = 0; valid_keys[n]; n++) {
+ if (!strcmp (valid_keys[n], key)) {
+ pl_add_meta (it, valid_keys[n], value);
+ break;
+ }
}
}
}
@@ -1486,7 +1489,7 @@ pl_load (const char *fname) {
fclose (fp);
return 0;
load_fail:
- trace ("playlist load fail!\n");
+ fprintf (stderr, "playlist load fail (%s)!\n", fname);
fclose (fp);
if (it) {
pl_item_free (it);