summaryrefslogtreecommitdiff
path: root/apps/metadata
diff options
context:
space:
mode:
authorRobert Keevil <rkeevil+rockbox@gmail.com>2009-04-16 23:10:45 +0000
committerRobert Keevil <rkeevil+rockbox@gmail.com>2009-04-16 23:10:45 +0000
commit4f47b3893838c8da9bea25078dc35e93d1d6df27 (patch)
treee069efcff0f1b9dc2ec777d50800b5ec8677a62a /apps/metadata
parent8d24f97c2c6990132bccb3a753007e3b7c004826 (diff)
downloadrockbox-4f47b3893838c8da9bea25078dc35e93d1d6df27.tar.gz
rockbox-4f47b3893838c8da9bea25078dc35e93d1d6df27.zip
Fix reading of Musicbrainz track IDs from ID3 tags - incorrect return values resulted in these tags being partially overwritten
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20719 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/metadata')
-rw-r--r--apps/metadata/mp3.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/apps/metadata/mp3.c b/apps/metadata/mp3.c
index 86a6f6329b..d3adc5d6ae 100644
--- a/apps/metadata/mp3.c
+++ b/apps/metadata/mp3.c
@@ -398,7 +398,8 @@ static int parsembtid( struct mp3entry* entry, char* tag, int bufferpos )
398 char* value = NULL; 398 char* value = NULL;
399 int desc_len = strlen(tag); 399 int desc_len = strlen(tag);
400 /*DEBUGF("MBID len: %d\n", desc_len);*/ 400 /*DEBUGF("MBID len: %d\n", desc_len);*/
401 int value_len = 0; 401 /* Musicbrainz track IDs are always 36 chars long */
402 const size_t mbtid_len = 36;
402 403
403 if ((tag - entry->id3v2buf + desc_len + 2) < bufferpos) 404 if ((tag - entry->id3v2buf + desc_len + 2) < bufferpos)
404 { 405 {
@@ -406,16 +407,15 @@ static int parsembtid( struct mp3entry* entry, char* tag, int bufferpos )
406 407
407 if (strcasecmp(tag, "http://musicbrainz.org") == 0) 408 if (strcasecmp(tag, "http://musicbrainz.org") == 0)
408 { 409 {
409 /* Musicbrainz track IDs are always 36 chars long plus null */ 410 if (mbtid_len == strlen(value))
410 value_len = 37; 411 {
411 412 entry->mb_track_id = value;
412 entry->mb_track_id = value; 413 return bufferpos + mbtid_len + 1;
413 414 }
414 /*DEBUGF("ENTRY: %s LEN: %d\n", entry->mb_track_id, strlen(entry->mb_track_id));*/
415 } 415 }
416 } 416 }
417 417
418 return tag - entry->id3v2buf + value_len; 418 return bufferpos;
419} 419}
420 420
421static const struct tag_resolver taglist[] = { 421static const struct tag_resolver taglist[] = {