summaryrefslogtreecommitdiffstats
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)
downloadrockbox-c6e69cd886eac13fcc6c14df727757ad2ba464d5.tar.gz
rockbox-c6e69cd886eac13fcc6c14df727757ad2ba464d5.tar.bz2
rockbox-c6e69cd886eac13fcc6c14df727757ad2ba464d5.zip
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;