summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/wavtrim.c18
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);