summaryrefslogtreecommitdiff
path: root/plugins/aac
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2012-05-19 12:22:52 +0200
committerGravatar waker <wakeroid@gmail.com>2012-05-19 12:22:52 +0200
commit6dd60afb628464deede7befc043f0025243b9157 (patch)
tree2fcfc67519d256067b9f994310fdfb331f6df6d4 /plugins/aac
parentc0fe4bc6e4d2c27320481e4645b60722080aa8fd (diff)
aac: fixed crash on reload metadata
Diffstat (limited to 'plugins/aac')
-rw-r--r--plugins/aac/aac.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/plugins/aac/aac.c b/plugins/aac/aac.c
index a42e8b78..99231057 100644
--- a/plugins/aac/aac.c
+++ b/plugins/aac/aac.c
@@ -1133,12 +1133,23 @@ aac_read_metadata (DB_playItem_t *it) {
return -1;
}
+ aac_info_t inf;
+ memset (&inf, 0, sizeof (inf));
+ inf.file = fp;
+ inf.junk = deadbeef->junk_get_leading_size (fp);
+ if (inf.junk >= 0) {
+ deadbeef->fseek (inf.file, inf.junk, SEEK_SET);
+ }
+ else {
+ inf.junk = 0;
+ }
+
MP4FILE_CB cb = {
.read = aac_fs_read,
.write = NULL,
.seek = aac_fs_seek,
.truncate = NULL,
- .user_data = fp
+ .user_data = &inf
};
deadbeef->pl_delete_all_meta (it);
@@ -1149,12 +1160,10 @@ aac_read_metadata (DB_playItem_t *it) {
mp4ff_close (mp4);
deadbeef->pl_add_meta (it, "title", NULL);
}
- else {
- /*int apeerr = */deadbeef->junk_apev2_read (it, fp);
- /*int v2err = */deadbeef->junk_id3v2_read (it, fp);
- /*int v1err = */deadbeef->junk_id3v1_read (it, fp);
- deadbeef->pl_add_meta (it, "title", NULL);
- }
+ /*int apeerr = */deadbeef->junk_apev2_read (it, fp);
+ /*int v2err = */deadbeef->junk_id3v2_read (it, fp);
+ /*int v1err = */deadbeef->junk_id3v1_read (it, fp);
+ deadbeef->pl_add_meta (it, "title", NULL);
deadbeef->fclose (fp);
#endif
return 0;
@@ -1352,7 +1361,6 @@ aac_insert (ddb_playlist_t *plt, DB_playItem_t *after, const char *fname) {
int apeerr = deadbeef->junk_apev2_read (it, fp);
int v2err = deadbeef->junk_id3v2_read (it, fp);
int v1err = deadbeef->junk_id3v1_read (it, fp);
- deadbeef->pl_add_meta (it, "title", NULL);
int64_t fsize = deadbeef->fgetlength (fp);