diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2010-06-05 08:58:30 +0000 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2010-06-05 08:58:30 +0000 |
commit | e49464b38735585eaa0ce01f5734c0bcfad851dd (patch) | |
tree | 6a5eed99d5bdad8ebc75fe5b9aeb7306a7418bd0 | |
parent | 219f5db1dcd779f0373d1b97d3878df5b3ab801f (diff) | |
download | rockbox-e49464b38735585eaa0ce01f5734c0bcfad851dd.tar.gz rockbox-e49464b38735585eaa0ce01f5734c0bcfad851dd.zip |
Improve error handling.
Add some more return checks and fix a memleak on error. Addresses warnings when
building with Rockbox Utility.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26569 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | tools/wavtrim.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/tools/wavtrim.c b/tools/wavtrim.c index 8517b4677e..36a1151b4d 100644 --- a/tools/wavtrim.c +++ b/tools/wavtrim.c | |||
@@ -198,12 +198,26 @@ int wavtrim(char * filename, int maxsilence ,char* errstring,int errsize) | |||
198 | if (pFile == NULL) | 198 | if (pFile == NULL) |
199 | { | 199 | { |
200 | snprintf(errstring,errsize,"Error opening file %s for writing\n",filename); | 200 | snprintf(errstring,errsize,"Error opening file %s for writing\n",filename); |
201 | free(pBuf); | ||
201 | return -1; | 202 | return -1; |
202 | } | 203 | } |
203 | 204 | ||
204 | /* write the new file */ | 205 | /* write the new file */ |
205 | fwrite(pBuf, 1, datapos, pFile); /* write header */ | 206 | if ((int)fwrite(pBuf, 1, datapos, pFile) != datapos) /* write header */ |
206 | fwrite(pBuf + datapos + skip_head, 1, datalen - skip_head - skip_tail, pFile); | 207 | { |
208 | snprintf(errstring,errsize,"Error writing file %s header\n",filename); | ||
209 | fclose(pFile); | ||
210 | free(pBuf); | ||
211 | return -1; | ||
212 | } | ||
213 | if ((int)fwrite(pBuf + datapos + skip_head, 1, datalen - skip_head - skip_tail, pFile) | ||
214 | != datalen - skip_head - skip_tail) | ||
215 | { | ||
216 | snprintf(errstring,errsize,"Error writing file %s data\n",filename); | ||
217 | fclose(pFile); | ||
218 | free(pBuf); | ||
219 | return -1; | ||
220 | } | ||
207 | fclose(pFile); | 221 | fclose(pFile); |
208 | 222 | ||
209 | free(pBuf); | 223 | free(pBuf); |