Mercurial > hg > dmlib
changeset 1654:92656ad7f706
Improve IFF reader error handling.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 30 May 2018 12:41:31 +0300 |
parents | 4b528da326da |
children | a05e3fcc60ec |
files | tools/libgfx.c |
diffstat | 1 files changed, 9 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/tools/libgfx.c Wed May 30 11:16:39 2018 +0300 +++ b/tools/libgfx.c Wed May 30 12:41:31 2018 +0300 @@ -1498,17 +1498,16 @@ } -static BOOL dmReadIFFChunkHdr(DMResource *fp, DMIFFChunk *chunk) +static int dmReadIFFChunkHdr(DMResource *fp, DMIFFChunk *chunk) { if (!dmf_read_be32(fp, &chunk->id) || !dmf_read_be32(fp, &chunk->size)) { - dmError(DMERR_FREAD, + return dmError(DMERR_FREAD, "ILBM: Could not read IFF chunk header.\n"); - return FALSE; } else - return TRUE; + return DMERR_OK; } static char * dmGetIFFChunkID(DMIFFChunk *chunk) @@ -1736,9 +1735,10 @@ dmMemset(&iff, 0, sizeof(iff)); // Read IFF FORM header - if (!dmReadIFFChunkHdr(fp, &chunk) || - chunk.id != IFF_ID_FORM || - chunk.size < 32) + if ((res = dmReadIFFChunkHdr(fp, &chunk)) != DMERR_OK) + return res; + + if (chunk.id != IFF_ID_FORM || chunk.size < 32) { return dmError(DMERR_NOT_SUPPORTED, "ILBM: Not a IFF file (%08X vs %08X / %d).\n", @@ -1757,11 +1757,8 @@ while (!parsed && !dmfeof(fp)) { - if (!dmReadIFFChunkHdr(fp, &chunk)) - { - return dmError(DMERR_FREAD, - "ILBM: Error reading IFF ILBM data.\n"); - } + if ((res = dmReadIFFChunkHdr(fp, &chunk)) != DMERR_OK) + return res; switch (chunk.id) {