]> git.draconx.ca Git - liblbx.git/commitdiff
lbximg: Return failure if there was a decoding error.
authorNick Bowler <nbowler@draconx.ca>
Tue, 17 Dec 2013 01:01:57 +0000 (20:01 -0500)
committerNick Bowler <nbowler@draconx.ca>
Tue, 17 Dec 2013 01:01:57 +0000 (20:01 -0500)
If any frame was not decoded because liblbx returned an error, we should
return a non-zero exit status from the tool.  Previously this would only
happen if *all* frames failed.

src/lbximg.c

index c88fc4e21bff29a5e14c56b3df599a06de1099b4..0fd3693d9e56ca5e620b6e045dbeba93fe2b557b 100644 (file)
@@ -263,6 +263,7 @@ decode(struct lbx_image *img, FILE *palf, FILE *override, int fmt, char **argv)
        unsigned char *framebits;
        struct lbx_colour palette[256];
        struct lbx_imginfo info;
+       int ret = EXIT_SUCCESS;
        int extracted = 0;
        unsigned int i;
 
@@ -287,6 +288,7 @@ decode(struct lbx_image *img, FILE *palf, FILE *override, int fmt, char **argv)
 
        if (usepalette) {
                if (loadpalette(img, &info, palf, override, palette) == -1) {
+                       ret = EXIT_FAILURE;
                        goto err;
                }
        }
@@ -302,6 +304,7 @@ decode(struct lbx_image *img, FILE *palf, FILE *override, int fmt, char **argv)
                data = lbx_img_getframe(img, i);
                if (!data) {
                        tool_err(-1, "error in frame %u: %s", i, lbx_errmsg());
+                       ret = EXIT_FAILURE;
                        continue;
                }
 
@@ -316,14 +319,11 @@ decode(struct lbx_image *img, FILE *palf, FILE *override, int fmt, char **argv)
 
        if (!extracted) {
                tool_err(-1, "no frames extracted.");
-               goto err;
+               ret = EXIT_FAILURE;
        }
-
-       free(framebits);
-       return EXIT_SUCCESS;
 err:
        free(framebits);
-       return EXIT_FAILURE;
+       return ret;
 }
 
 int main(int argc, char **argv)