summaryrefslogtreecommitdiff
path: root/apps/metadata/mp3.c
diff options
context:
space:
mode:
authorMaurus Cuelenaere <mcuelenaere@gmail.com>2009-08-01 19:37:09 +0000
committerMaurus Cuelenaere <mcuelenaere@gmail.com>2009-08-01 19:37:09 +0000
commitfaf37f9d216c76db1ff8e1ba5aca6c69365bc9c6 (patch)
treea90805d18b90fdf44e5c0e6ae42d0ab28412899a /apps/metadata/mp3.c
parente454d88b88b278cf079c04d4052b11e85c605425 (diff)
downloadrockbox-faf37f9d216c76db1ff8e1ba5aca6c69365bc9c6.tar.gz
rockbox-faf37f9d216c76db1ff8e1ba5aca6c69365bc9c6.zip
MP3 metadata parser:
* Use ARRAYLEN() * id3_is_genre_string(): loop over the whole array instead of comparing a pointer to the first and last item of an array of pointers (fixes crash on Onda VX747) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22104 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/metadata/mp3.c')
-rw-r--r--apps/metadata/mp3.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/apps/metadata/mp3.c b/apps/metadata/mp3.c
index f02700055a..20596b1961 100644
--- a/apps/metadata/mp3.c
+++ b/apps/metadata/mp3.c
@@ -89,7 +89,7 @@ static const char* const genres[] = {
89 89
90char* id3_get_num_genre(unsigned int genre_num) 90char* id3_get_num_genre(unsigned int genre_num)
91{ 91{
92 if (genre_num < sizeof(genres)/sizeof(char*)) 92 if (genre_num < ARRAYLEN(genres))
93 return (char*)genres[genre_num]; 93 return (char*)genres[genre_num];
94 return NULL; 94 return NULL;
95} 95}
@@ -97,8 +97,13 @@ char* id3_get_num_genre(unsigned int genre_num)
97/* True if the string is from the "genres" array */ 97/* True if the string is from the "genres" array */
98bool id3_is_genre_string(const char *string) 98bool id3_is_genre_string(const char *string)
99{ 99{
100 return ( string >= genres[0] && 100 unsigned int i;
101 string <= genres[sizeof(genres)/sizeof(char*) - 1] ); 101
102 for(i=0; i < ARRAYLEN(genres); i++)
103 if(genres[i] == string)
104 return true;
105
106 return false;
102} 107}
103 108
104/* 109/*
@@ -445,7 +450,7 @@ static const struct tag_resolver taglist[] = {
445 { "UFID", 4, 0, &parsembtid, false }, 450 { "UFID", 4, 0, &parsembtid, false },
446}; 451};
447 452
448#define TAGLIST_SIZE ((int)(sizeof(taglist) / sizeof(taglist[0]))) 453#define TAGLIST_SIZE ((int)ARRAYLEN(taglist))
449 454
450/* Get the length of an ID3 string in the given encoding. Returns the length 455/* Get the length of an ID3 string in the given encoding. Returns the length
451 * in bytes, including end nil, or -1 if the encoding is unknown. 456 * in bytes, including end nil, or -1 if the encoding is unknown.