This is for bug # 2068
authorKent Mein <mein@cs.umn.edu>
Mon, 10 Jan 2005 16:22:40 +0000 (16:22 +0000)
committerKent Mein <mein@cs.umn.edu>
Mon, 10 Jan 2005 16:22:40 +0000 (16:22 +0000)
I standarized the returns on a failed opening of the output file for
the above image formats.

I also cleaned up a couple of warnings.

Kent

source/blender/imbuf/intern/IMB_hamx.h
source/blender/imbuf/intern/bmp.c
source/blender/imbuf/intern/cspace.c
source/blender/imbuf/intern/ham.c
source/blender/imbuf/intern/hamx.c
source/blender/imbuf/intern/iff.c
source/blender/imbuf/intern/iris.c
source/blender/imbuf/intern/jpeg.c
source/blender/imbuf/intern/png.c
source/blender/imbuf/intern/targa.c
source/blender/imbuf/intern/writeimage.c

index 98cb1366b8b9498d7288fc28798a8aeec61e1945..d5b23d4e685204cd9ffd876ad1c77615606434af 100644 (file)
@@ -44,7 +44,7 @@ struct ImBuf;
 
 struct ImBuf *imb_loadanim(int *iffmem, int flags);
 short imb_enc_anim(struct ImBuf *ibuf, int file);  
-void imb_convhamx(struct ImBuf *ibuf, unsigned char coltab[][4], short *deltab);
+void imb_convhamx(struct ImBuf *ibuf, unsigned char *coltab, short *deltab);
 
 #endif
 
index 004a01d0ded0843689925ad03bcd927c5c51c034..31f2b66cd83438b4be4cd766167127e3fc28fd4f 100644 (file)
@@ -207,6 +207,7 @@ short imb_savebmp(struct ImBuf *ibuf, char *name, int flags) {
 
        data = (uchar *) ibuf->rect;
        ofile = fopen(name,"wb");
+        if (!ofile) return 0;
 
        putShortLSB(19778,ofile); /* "BM" */
        putIntLSB(0,ofile); /* This can be 0 for BI_RGB bitmaps */
index 5cd2da5a9987d6562195b8ea0688142887678c6e..f994755c823b69cb0c9bfc6debd52166963b3b02 100644 (file)
@@ -74,15 +74,15 @@ static void cspfill(short *buf, short *fill, int x)
 }
 
 
-static void cspadd(short *buf, short cont[][3], unsigned char *rect, int x)
+static void cspadd(short *buf, short *cont, unsigned char *rect, int x)
 {
        short i;
        for (;x>0;x--){
                i = *(rect);
                rect += 4;
-               buf[0] += cont[i][0];
-               buf[1] += cont[i][1];
-               buf[2] += cont[i][2];
+               buf[0] += cont[i*3];
+               buf[1] += cont[i*3 + 1];
+               buf[2] += cont[i*3 + 2];
                buf += 3;
        }
 }
index 383c79334bcc60e23158c0db0b7ea8b339639fec..de1d504980ebf2fbee7a7c0ab906a78c735d7f55 100644 (file)
@@ -92,7 +92,7 @@ static void addhamdither(short x, unsigned char *dit,
 
 static void convhamscanl(short x, short y,
                                  unsigned char *rgbbase,
-                                 unsigned char coltab[][4],
+                                 unsigned char *coltab,
                                  short *deltab,
                                  short bits)
 {
@@ -114,9 +114,9 @@ static void convhamscanl(short x, short y,
 
        if ((hambase = (unsigned short *) malloc((x+4) * sizeof(unsigned short)))==0) return;
 
-       lb = coltab[0][1];
-       lg = coltab[0][2];
-       lr = coltab[0][3];
+       lb = coltab[1];
+       lg = coltab[2];
+       lr = coltab[3];
        type = col = 0;
 
        ham = hambase;
@@ -190,9 +190,9 @@ static void convhamscanl(short x, short y,
                                lb = b;
                                break;
                        default:
-                               lb = coltab[col][1];
-                               lg = coltab[col][2];
-                               lr = coltab[col][3];
+                               lb = coltab[col*4 + 1];
+                               lg = coltab[col*4 + 2];
+                               lr = coltab[col*4 + 3];
                        }
                        *ham = type + col;
                } else *ham = HAMG + HAMFREE + g;
@@ -267,10 +267,10 @@ short imb_converttoham(struct ImBuf *ibuf)
                IMB_dit2(ibuf, 2, 4);
                IMB_dit2(ibuf, 1, 4);
                IMB_dit2(ibuf, 0, 4);
-               imb_convhamx(ibuf, coltab, deltab);
+               imb_convhamx(ibuf, (uchar *)coltab, deltab);
        } else {
                for(;y > 0; y--){
-                       convhamscanl(x, y, (uchar *)rect, coltab, deltab, ibuf->cbits);
+                       convhamscanl(x, y, (uchar *)rect, (uchar *)coltab, deltab, ibuf->cbits);
                        rect += x;
                }
        }
index d86b8b24bdfcdfcfed26afb13e47e90df8a352a7..4d75b0d86d616ad3cab77680c9a959c2746ffe7e 100644 (file)
@@ -207,7 +207,7 @@ float adat_distort = 1.0;
  * 
  */
 
-void imb_convhamx(struct ImBuf *ibuf, unsigned char coltab[][4], short *deltab)
+void imb_convhamx(struct ImBuf *ibuf, unsigned char *coltab, short *deltab)
 {
        short r,g,b,lr,lg,lb,dr,dg,db,col,fout,type,step;
        int i;
@@ -225,9 +225,9 @@ void imb_convhamx(struct ImBuf *ibuf, unsigned char coltab[][4], short *deltab)
                rect += 4*step;
                i = ((ibuf->x * ibuf->y) + 2 - step - 1) / 2;
 
-               lb = coltab[0][1];
-               lg = coltab[0][2];
-               lr = coltab[0][3];
+               lb = coltab[1];
+               lg = coltab[2];
+               lr = coltab[3];
                type = col = 0;
 
                for ( ;i>0;i--){
@@ -273,9 +273,9 @@ void imb_convhamx(struct ImBuf *ibuf, unsigned char coltab[][4], short *deltab)
                                default:
                                        /*printf("%04x %5d %5d  ", (b<<8) + (g<<4) + r, col, fout);*/
                                        
-                                       lb = coltab[col][1];
-                                       lg = coltab[col][2];
-                                       lr = coltab[col][3];
+                                       lb = coltab[col*4 + 1];
+                                       lg = coltab[col*4 + 2];
+                                       lr = coltab[col*4 + 3];
                                        /*printf("%01x%01x%01x %01x%01x%01x\n", b, g, r, lb, lg, lr);*/
                                        col += 48;
                                }
index 251799c9126bd959470fb01faaf1230a4d80c19d..790f8344207ce9672a235466965ca26b9ea61208 100644 (file)
@@ -204,7 +204,7 @@ unsigned short imb_update_iff(int file, int code)
                filelen -= 8;
                if (buf[0] == code) break;
                
-               skip = BIG_LONG(buf[1]) + 1 & ~1;
+               skip = (BIG_LONG(buf[1]) + 1) & ~1;
                filelen -= skip;
                lseek(file, skip, 1);
        }
index d9bb290ed74622f0ee8e55dcb191aa6a4d32d7eb..37f695e34a90d1b0faf7a90fbea4065e926154fa 100644 (file)
@@ -489,12 +489,8 @@ static int output_iris(unsigned int *lptr, int xsize, int ysize, int zsize, char
 
        goodwrite = 1;
        outf = fopen(name, "wb");
+       if(!outf) return 0;
 
-       if(!outf) {
-               perror("fopen");
-               fprintf(stderr,"output_iris: can't open output file\n");
-               return 0;
-       }
        tablen = ysize*zsize*sizeof(int);
 
        image = (IMAGE *)malloc(sizeof(IMAGE));
index 7cc4e4fdefe391daa86b2c11522868359da0b4e3..fda48bf18cc769140c6b783e98c4b6153690a1a2 100644 (file)
@@ -351,10 +351,7 @@ ImBuf * imb_ibJpegImageFromFilename (char * filename, int flags)
        FILE * infile;
        ImBuf * ibuf;
        
-       if ((infile = fopen(filename, "rb")) == NULL) {
-               /*fprintf(stderr, "can't open %s\n", filename);*/
-               return 0;
-       }
+       if ((infile = fopen(filename, "rb")) == NULL) return 0;
 
        cinfo->err = jpeg_std_error(&jerr);
        jerr.error_exit = jpeg_error;
@@ -494,7 +491,7 @@ static int save_stdjpeg(char * name, struct ImBuf * ibuf)
        struct jpeg_compress_struct _cinfo, *cinfo = &_cinfo;
        struct jpeg_error_mgr jerr;
 
-       if ((outfile = fopen(name, "wb")) == NULL) return(-1);
+       if ((outfile = fopen(name, "wb")) == NULL) return 0;
        jpeg_default_quality = 75;
 
        cinfo->err = jpeg_std_error(&jerr);
@@ -518,7 +515,7 @@ static int save_vidjpeg(char * name, struct ImBuf * ibuf)
        struct jpeg_compress_struct _cinfo, *cinfo = &_cinfo;
        struct jpeg_error_mgr jerr;
 
-       if ((outfile = fopen(name, "wb")) == NULL) return(-1);
+       if ((outfile = fopen(name, "wb")) == NULL) return 0;
        jpeg_default_quality = 90;
 
        cinfo->err = jpeg_std_error(&jerr);
@@ -584,7 +581,7 @@ static int save_maxjpeg(char * name, struct ImBuf * ibuf)
        struct jpeg_compress_struct _cinfo, *cinfo = &_cinfo;
        struct jpeg_error_mgr jerr;
 
-       if ((outfile = fopen(name, "wb")) == NULL) return(-1);
+       if ((outfile = fopen(name, "wb")) == NULL) return 0;
        jpeg_default_quality = 100;
 
        cinfo->err = jpeg_std_error(&jerr);
@@ -607,7 +604,6 @@ static int save_maxjpeg(char * name, struct ImBuf * ibuf)
        return(jpeg_failed);
 }
 
-
 int imb_savejpeg(struct ImBuf * ibuf, char * name, int flags)
 {
        
index 27957a3435110e862a062e93723419d2781dc7cb..501d4121ff8995539c939303063652f0f73e6c27 100644 (file)
@@ -192,6 +192,7 @@ short imb_savepng(struct ImBuf *ibuf, char *name, int flags)
                         Flush);
        } else {
                fp = fopen(name, "wb");
+                if (!fp) return 0;
                png_init_io(png_ptr, fp);
        }
 
index 6b8427339d24c82eea66457d505d8fed164fbd3d..06e75673285c94e4b8a0e76b00b19d1fa4cf20b1 100644 (file)
@@ -291,7 +291,7 @@ short imb_savetarga(struct ImBuf * ibuf, char *name, int flags)
                buf[17] |= 0x08;
        }
        fildes = fopen(name,"wb");
-       
+        if (!fildes) return 0;
 
        if (fwrite(buf, 1, 18,fildes) != 18) return (0);
 
index ffc1c12d00dcf2022bb5da4cb61c355b72110a3d..150ab8aac26c8f69d6c8e41b089b1a9d0d3c726f 100644 (file)
@@ -65,8 +65,7 @@ short IMB_saveiff(struct ImBuf *ibuf,char *naam,int flags)
 
        /* Put formats that take a filename here */
        if (IS_jpg(ibuf)) {
-               if(imb_savejpeg(ibuf, naam, flags)) return (0);
-               else return (TRUE);
+               return imb_savejpeg(ibuf, naam, flags);
        }
        if (IS_png(ibuf)) {
                return imb_savepng(ibuf,naam,flags);