summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bavin <pondlife@pondlife.me>2010-02-24 17:20:39 +0000
committerSteve Bavin <pondlife@pondlife.me>2010-02-24 17:20:39 +0000
commitc6e69cd886eac13fcc6c14df727757ad2ba464d5 (patch)
tree1c2401d8d718b9f830b9d4cb89085867b1298046
parent9c0847fc279e7211cc1cdbce82435a2c823a41b3 (diff)
Put the SMAF metadata buffer on the stack to save some memory. Only tested with one SMAF file, so please check if you have more.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24886 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/metadata/smaf.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/apps/metadata/smaf.c b/apps/metadata/smaf.c
index f7d825c96a..586802b7b5 100644
--- a/apps/metadata/smaf.c
+++ b/apps/metadata/smaf.c
@@ -48,8 +48,6 @@ static int support_codepages[7] = {
#define TAG_ARTIST (('A'<<8)|'N')
#define TAG_COMPOSER (('S'<<8)|'W')
-static unsigned char smafbuf[1024];
-
static bool read_datachunk(unsigned char *src, int size, unsigned short tag,
int codepage, unsigned char *dst)
{
@@ -235,9 +233,11 @@ static bool get_smaf_metadata_score_track(struct mp3entry *id3,
bool get_smaf_metadata(int fd, struct mp3entry* id3)
{
+ unsigned char smafbuf[1024];
+
/* Use the trackname part of the id3 structure as a temporary buffer */
unsigned char* buf = (unsigned char *)id3->path;
- unsigned char *endbuf = smafbuf + 1024;
+ unsigned char *endbuf = smafbuf + sizeof(smafbuf);
int i;
int contents_size;
int codepage = ISO_8859_1;
@@ -347,8 +347,8 @@ bool get_smaf_metadata(int fd, struct mp3entry* id3)
if (contents_size > i)
lseek(fd, contents_size - i, SEEK_CUR);
- /* assume the SMAF pcm data position is less than 1024 bytes */
- if (read(fd, smafbuf, 1024) < 1024)
+ /* assume the SMAF pcm data position is near the start */
+ if (read(fd, smafbuf, sizeof(smafbuf)) < (ssize_t)sizeof(smafbuf))
return false;
buf = smafbuf;