Make error handling more consistent with other TurboJPEG C code
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@481 632fc199-4ca6-4c93-a231-07263d6284db
This commit is contained in:
31
jpgtest.c
31
jpgtest.c
@@ -24,7 +24,8 @@
|
|||||||
#include "./turbojpeg.h"
|
#include "./turbojpeg.h"
|
||||||
|
|
||||||
#define _throw(op, err) { \
|
#define _throw(op, err) { \
|
||||||
printf("ERROR in line %d while %s:\n%s\n", __LINE__, op, err); goto bailout;}
|
printf("ERROR in line %d while %s:\n%s\n", __LINE__, op, err); \
|
||||||
|
retval=-1; goto bailout;}
|
||||||
#define _throwunix(m) _throw(m, strerror(errno))
|
#define _throwunix(m) _throw(m, strerror(errno))
|
||||||
#define _throwtj(m) _throw(m, tjGetErrorStr())
|
#define _throwtj(m) _throw(m, tjGetErrorStr())
|
||||||
#define _throwbmp(m) _throw(m, bmpgeterr())
|
#define _throwbmp(m) _throw(m, bmpgeterr())
|
||||||
@@ -74,7 +75,7 @@ int decomptest(unsigned char *srcbuf, unsigned char **jpegbuf,
|
|||||||
int flags=(forcemmx?TJ_FORCEMMX:0)|(forcesse?TJ_FORCESSE:0)
|
int flags=(forcemmx?TJ_FORCEMMX:0)|(forcesse?TJ_FORCESSE:0)
|
||||||
|(forcesse2?TJ_FORCESSE2:0)|(forcesse3?TJ_FORCESSE3:0)
|
|(forcesse2?TJ_FORCESSE2:0)|(forcesse3?TJ_FORCESSE3:0)
|
||||||
|(fastupsample?TJ_FASTUPSAMPLE:0);
|
|(fastupsample?TJ_FASTUPSAMPLE:0);
|
||||||
int i, j, ITER, rgbbufalloc=0;
|
int i, j, ITER, rgbbufalloc=0, retval=0;
|
||||||
double start, elapsed;
|
double start, elapsed;
|
||||||
int ps=_ps[pf];
|
int ps=_ps[pf];
|
||||||
int yuvsize=TJBUFSIZEYUV(w, h, jpegsub), bufsize;
|
int yuvsize=TJBUFSIZEYUV(w, h, jpegsub), bufsize;
|
||||||
@@ -203,15 +204,11 @@ int decomptest(unsigned char *srcbuf, unsigned char **jpegbuf,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(hnd) {tjDestroy(hnd); hnd=NULL;}
|
|
||||||
if(rgbbuf && rgbbufalloc) {free(rgbbuf); rgbbuf=NULL;}
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
bailout:
|
bailout:
|
||||||
if(outfile) {fclose(outfile); outfile=NULL;}
|
if(outfile) {fclose(outfile); outfile=NULL;}
|
||||||
if(hnd) {tjDestroy(hnd); hnd=NULL;}
|
if(hnd) {tjDestroy(hnd); hnd=NULL;}
|
||||||
if(rgbbuf && rgbbufalloc) {free(rgbbuf); rgbbuf=NULL;}
|
if(rgbbuf && rgbbufalloc) {free(rgbbuf); rgbbuf=NULL;}
|
||||||
return -1;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
void dotest(unsigned char *srcbuf, int w, int h, int jpegsub, int qual,
|
void dotest(unsigned char *srcbuf, int w, int h, int jpegsub, int qual,
|
||||||
@@ -222,7 +219,7 @@ void dotest(unsigned char *srcbuf, int w, int h, int jpegsub, int qual,
|
|||||||
unsigned char **jpegbuf=NULL, *rgbbuf=NULL;
|
unsigned char **jpegbuf=NULL, *rgbbuf=NULL;
|
||||||
double start, elapsed;
|
double start, elapsed;
|
||||||
int jpgbufsize=0, i, j, tilesizex=w, tilesizey=h, numtilesx=1, numtilesy=1,
|
int jpgbufsize=0, i, j, tilesizex=w, tilesizey=h, numtilesx=1, numtilesy=1,
|
||||||
ITER;
|
ITER, retval=0;
|
||||||
unsigned long *comptilesize=NULL;
|
unsigned long *comptilesize=NULL;
|
||||||
int flags=(forcemmx?TJ_FORCEMMX:0)|(forcesse?TJ_FORCESSE:0)
|
int flags=(forcemmx?TJ_FORCEMMX:0)|(forcesse?TJ_FORCESSE:0)
|
||||||
|(forcesse2?TJ_FORCESSE2:0)|(forcesse3?TJ_FORCESSE3:0)
|
|(forcesse2?TJ_FORCESSE2:0)|(forcesse3?TJ_FORCESSE3:0)
|
||||||
@@ -361,19 +358,12 @@ void dotest(unsigned char *srcbuf, int w, int h, int jpegsub, int qual,
|
|||||||
goto bailout;
|
goto bailout;
|
||||||
|
|
||||||
// Cleanup
|
// Cleanup
|
||||||
if(outfile) {fclose(outfile); outfile=NULL;}
|
|
||||||
if(jpegbuf)
|
|
||||||
{
|
|
||||||
for(i=0; i<numtilesx*numtilesy; i++)
|
for(i=0; i<numtilesx*numtilesy; i++)
|
||||||
{if(jpegbuf[i]) free(jpegbuf[i]); jpegbuf[i]=NULL;}
|
{if(jpegbuf[i]) free(jpegbuf[i]); jpegbuf[i]=NULL;}
|
||||||
free(jpegbuf); jpegbuf=NULL;
|
free(jpegbuf); jpegbuf=NULL;
|
||||||
}
|
free(comptilesize); comptilesize=NULL;
|
||||||
if(comptilesize) {free(comptilesize); comptilesize=NULL;}
|
|
||||||
} while(tilesizex<w || tilesizey<h);
|
} while(tilesizex<w || tilesizey<h);
|
||||||
|
|
||||||
if(rgbbuf) {free(rgbbuf); rgbbuf=NULL;}
|
|
||||||
return;
|
|
||||||
|
|
||||||
bailout:
|
bailout:
|
||||||
if(outfile) {fclose(outfile); outfile=NULL;}
|
if(outfile) {fclose(outfile); outfile=NULL;}
|
||||||
if(jpegbuf)
|
if(jpegbuf)
|
||||||
@@ -396,7 +386,7 @@ void dodecomptest(char *filename)
|
|||||||
unsigned long *comptilesize=NULL, srcbufsize, jpgbufsize;
|
unsigned long *comptilesize=NULL, srcbufsize, jpgbufsize;
|
||||||
int w=0, h=0, jpegsub=-1;
|
int w=0, h=0, jpegsub=-1;
|
||||||
char *temp=NULL;
|
char *temp=NULL;
|
||||||
int i, j, tilesizex, tilesizey, numtilesx, numtilesy;
|
int i, j, tilesizex, tilesizey, numtilesx, numtilesy, retval=0;
|
||||||
double start, elapsed;
|
double start, elapsed;
|
||||||
int flags=(forcemmx?TJ_FORCEMMX:0)|(forcesse?TJ_FORCESSE:0)
|
int flags=(forcemmx?TJ_FORCEMMX:0)|(forcesse?TJ_FORCESSE:0)
|
||||||
|(forcesse2?TJ_FORCESSE2:0)|(forcesse3?TJ_FORCESSE3:0);
|
|(forcesse2?TJ_FORCESSE2:0)|(forcesse3?TJ_FORCESSE3:0);
|
||||||
@@ -601,7 +591,7 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
unsigned char *bmpbuf=NULL; int w, h, i, j;
|
unsigned char *bmpbuf=NULL; int w, h, i, j;
|
||||||
int qual=-1, hiqual=-1; char *temp;
|
int qual=-1, hiqual=-1; char *temp;
|
||||||
int minarg=2;
|
int minarg=2; int retval=0;
|
||||||
|
|
||||||
if((sf=tjGetScalingFactors(&nsf))==NULL || nsf==0)
|
if((sf=tjGetScalingFactors(&nsf))==NULL || nsf==0)
|
||||||
_throwtj("executing tjGetScalingFactors()");
|
_throwtj("executing tjGetScalingFactors()");
|
||||||
@@ -749,10 +739,7 @@ int main(int argc, char *argv[])
|
|||||||
dotest(bmpbuf, w, h, TJ_444, i, argv[1]);
|
dotest(bmpbuf, w, h, TJ_444, i, argv[1]);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
if(bmpbuf) free(bmpbuf);
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
bailout:
|
bailout:
|
||||||
if(bmpbuf) free(bmpbuf);
|
if(bmpbuf) free(bmpbuf);
|
||||||
return 1;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user