tag/{aiff,riff}: fix ID3 chunk padding
Apply padding only to the fseek(), not to the chunk size. This fixes bogus "failed to read riff chunk" messages when the last chunk has an odd size. See http://bugs.musicpd.org/view.php?id=4486
This commit is contained in:
@@ -84,14 +84,14 @@ aiff_seek_id3(FILE *file)
|
||||
underflow when casting to off_t */
|
||||
return 0;
|
||||
|
||||
if (size % 2 != 0)
|
||||
/* pad byte */
|
||||
++size;
|
||||
|
||||
if (memcmp(chunk.id, "ID3 ", 4) == 0)
|
||||
/* found it! */
|
||||
return size;
|
||||
|
||||
if (size % 2 != 0)
|
||||
/* pad byte */
|
||||
++size;
|
||||
|
||||
if (fseek(file, size, SEEK_CUR) != 0)
|
||||
return 0;
|
||||
}
|
||||
|
@@ -82,15 +82,15 @@ riff_seek_id3(FILE *file)
|
||||
underflow when casting to off_t */
|
||||
return 0;
|
||||
|
||||
if (size % 2 != 0)
|
||||
/* pad byte */
|
||||
++size;
|
||||
|
||||
if (memcmp(chunk.id, "id3 ", 4) == 0 ||
|
||||
memcmp(chunk.id, "ID3 ", 4) == 0)
|
||||
/* found it! */
|
||||
return size;
|
||||
|
||||
if (size % 2 != 0)
|
||||
/* pad byte */
|
||||
++size;
|
||||
|
||||
if (fseek(file, size, SEEK_CUR) != 0)
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user