diff options
author | Robert Keevil <rkeevil+rockbox@gmail.com> | 2009-04-16 23:10:45 +0000 |
---|---|---|
committer | Robert Keevil <rkeevil+rockbox@gmail.com> | 2009-04-16 23:10:45 +0000 |
commit | 4f47b3893838c8da9bea25078dc35e93d1d6df27 (patch) | |
tree | e069efcff0f1b9dc2ec777d50800b5ec8677a62a /apps/metadata | |
parent | 8d24f97c2c6990132bccb3a753007e3b7c004826 (diff) | |
download | rockbox-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.c | 16 |
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 | ||
421 | static const struct tag_resolver taglist[] = { | 421 | static const struct tag_resolver taglist[] = { |