diff options
author | Brandon Low <lostlogic@rockbox.org> | 2007-10-25 18:58:44 +0000 |
---|---|---|
committer | Brandon Low <lostlogic@rockbox.org> | 2007-10-25 18:58:44 +0000 |
commit | 4bde8982f146f9866b4b78f7be5945c82c19d403 (patch) | |
tree | 6fc56148834bfa20e9f8064b47e75f6c64ac7014 /apps/codecs/flac.c | |
parent | 35f23267bfc97d070284a03e4adaa2c6b7bb6852 (diff) | |
download | rockbox-4bde8982f146f9866b4b78f7be5945c82c19d403.tar.gz rockbox-4bde8982f146f9866b4b78f7be5945c82c19d403.zip |
Fix a fixme in flac and make the usage of the read_filebuf codec api more consistent with its actual contract.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15303 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/flac.c')
-rw-r--r-- | apps/codecs/flac.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/apps/codecs/flac.c b/apps/codecs/flac.c index 2eb0deb9f5..d1c52833a6 100644 --- a/apps/codecs/flac.c +++ b/apps/codecs/flac.c | |||
@@ -77,8 +77,7 @@ static bool flac_init(FLACContext* fc, int first_frame_offset) | |||
77 | uint32_t offset_hi,offset_lo; | 77 | uint32_t offset_hi,offset_lo; |
78 | uint16_t blocksize; | 78 | uint16_t blocksize; |
79 | int endofmetadata=0; | 79 | int endofmetadata=0; |
80 | int blocklength; | 80 | uint32_t blocklength; |
81 | int n; | ||
82 | 81 | ||
83 | ci->memset(fc,0,sizeof(FLACContext)); | 82 | ci->memset(fc,0,sizeof(FLACContext)); |
84 | nseekpoints=0; | 83 | nseekpoints=0; |
@@ -113,9 +112,7 @@ static bool flac_init(FLACContext* fc, int first_frame_offset) | |||
113 | 112 | ||
114 | if ((buf[0] & 0x7f) == 0) /* 0 is the STREAMINFO block */ | 113 | if ((buf[0] & 0x7f) == 0) /* 0 is the STREAMINFO block */ |
115 | { | 114 | { |
116 | /* FIXME: Don't trust the value of blocklength, use actual return | 115 | if (ci->read_filebuf(buf, blocklength) < blocklength) return false; |
117 | * value in bytes instead */ | ||
118 | ci->read_filebuf(buf, blocklength); | ||
119 | 116 | ||
120 | fc->filesize = ci->filesize; | 117 | fc->filesize = ci->filesize; |
121 | fc->min_blocksize = (buf[0] << 8) | buf[1]; | 118 | fc->min_blocksize = (buf[0] << 8) | buf[1]; |
@@ -140,9 +137,8 @@ static bool flac_init(FLACContext* fc, int first_frame_offset) | |||
140 | } else if ((buf[0] & 0x7f) == 3) { /* 3 is the SEEKTABLE block */ | 137 | } else if ((buf[0] & 0x7f) == 3) { /* 3 is the SEEKTABLE block */ |
141 | while ((nseekpoints < MAX_SUPPORTED_SEEKTABLE_SIZE) && | 138 | while ((nseekpoints < MAX_SUPPORTED_SEEKTABLE_SIZE) && |
142 | (blocklength >= 18)) { | 139 | (blocklength >= 18)) { |
143 | n=ci->read_filebuf(buf,18); | 140 | if (ci->read_filebuf(buf,18) < 18) return false; |
144 | if (n < 18) return false; | 141 | blocklength-=18; |
145 | blocklength-=n; | ||
146 | 142 | ||
147 | seekpoint_hi=(buf[0] << 24) | (buf[1] << 16) | | 143 | seekpoint_hi=(buf[0] << 24) | (buf[1] << 16) | |
148 | (buf[2] << 8) | buf[3]; | 144 | (buf[2] << 8) | buf[3]; |