Fix some resource leaks
This commit is contained in:
parent
f82d7f3a63
commit
f9df8ba19a
|
@ -734,12 +734,16 @@ opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tga_readheader(f, &pixel_bit_depth, &image_width, &image_height, &flip_image))
|
if (!tga_readheader(f, &pixel_bit_depth, &image_width, &image_height, &flip_image)) {
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* We currently only support 24 & 32 bit tga's ... */
|
/* We currently only support 24 & 32 bit tga's ... */
|
||||||
if (!((pixel_bit_depth == 24) || (pixel_bit_depth == 32)))
|
if (!((pixel_bit_depth == 24) || (pixel_bit_depth == 32))) {
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* initialize image components */
|
/* initialize image components */
|
||||||
memset(&cmptparm[0], 0, 4 * sizeof(opj_image_cmptparm_t));
|
memset(&cmptparm[0], 0, 4 * sizeof(opj_image_cmptparm_t));
|
||||||
|
@ -772,8 +776,11 @@ opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters) {
|
||||||
/* create the image */
|
/* create the image */
|
||||||
image = opj_image_create((OPJ_UINT32)numcomps, &cmptparm[0], color_space);
|
image = opj_image_create((OPJ_UINT32)numcomps, &cmptparm[0], color_space);
|
||||||
|
|
||||||
if (!image)
|
if (!image) {
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* set image offset and reference grid */
|
/* set image offset and reference grid */
|
||||||
image->x0 = (OPJ_UINT32)parameters->image_offset_x0;
|
image->x0 = (OPJ_UINT32)parameters->image_offset_x0;
|
||||||
|
@ -801,18 +808,21 @@ opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters) {
|
||||||
{
|
{
|
||||||
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
||||||
opj_image_destroy(image);
|
opj_image_destroy(image);
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if ( !fread(&g, 1, 1, f) )
|
if ( !fread(&g, 1, 1, f) )
|
||||||
{
|
{
|
||||||
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
||||||
opj_image_destroy(image);
|
opj_image_destroy(image);
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if ( !fread(&r, 1, 1, f) )
|
if ( !fread(&r, 1, 1, f) )
|
||||||
{
|
{
|
||||||
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
||||||
opj_image_destroy(image);
|
opj_image_destroy(image);
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -831,24 +841,28 @@ opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters) {
|
||||||
{
|
{
|
||||||
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
||||||
opj_image_destroy(image);
|
opj_image_destroy(image);
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if ( !fread(&g, 1, 1, f) )
|
if ( !fread(&g, 1, 1, f) )
|
||||||
{
|
{
|
||||||
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
||||||
opj_image_destroy(image);
|
opj_image_destroy(image);
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if ( !fread(&r, 1, 1, f) )
|
if ( !fread(&r, 1, 1, f) )
|
||||||
{
|
{
|
||||||
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
||||||
opj_image_destroy(image);
|
opj_image_destroy(image);
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if ( !fread(&a, 1, 1, f) )
|
if ( !fread(&a, 1, 1, f) )
|
||||||
{
|
{
|
||||||
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
||||||
opj_image_destroy(image);
|
opj_image_destroy(image);
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -863,6 +877,7 @@ opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters) {
|
||||||
fprintf(stderr, "Currently unsupported bit depth : %s\n", filename);
|
fprintf(stderr, "Currently unsupported bit depth : %s\n", filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fclose(f);
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -889,6 +904,7 @@ int imagetotga(opj_image_t * image, const char *outfile) {
|
||||||
if ((image->comps[0].dx != image->comps[i+1].dx)
|
if ((image->comps[0].dx != image->comps[i+1].dx)
|
||||||
||(image->comps[0].dy != image->comps[i+1].dy)
|
||(image->comps[0].dy != image->comps[i+1].dy)
|
||||||
||(image->comps[0].prec != image->comps[i+1].prec)) {
|
||(image->comps[0].prec != image->comps[i+1].prec)) {
|
||||||
|
fclose(fdest);
|
||||||
fprintf(stderr, "Unable to create a tga file with such J2K image charateristics.");
|
fprintf(stderr, "Unable to create a tga file with such J2K image charateristics.");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -1081,6 +1097,7 @@ opj_image_t* pgxtoimage(const char *filename, opj_cparameters_t *parameters) {
|
||||||
|
|
||||||
fseek(f, 0, SEEK_SET);
|
fseek(f, 0, SEEK_SET);
|
||||||
if( fscanf(f, "PG%[ \t]%c%c%[ \t+-]%d%[ \t]%d%[ \t]%d",temp,&endian1,&endian2,signtmp,&prec,temp,&w,temp,&h) != 9){
|
if( fscanf(f, "PG%[ \t]%c%c%[ \t+-]%d%[ \t]%d%[ \t]%d",temp,&endian1,&endian2,signtmp,&prec,temp,&w,temp,&h) != 9){
|
||||||
|
fclose(f);
|
||||||
fprintf(stderr, "ERROR: Failed to read the right number of element from the fscanf() function!\n");
|
fprintf(stderr, "ERROR: Failed to read the right number of element from the fscanf() function!\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1098,6 +1115,7 @@ opj_image_t* pgxtoimage(const char *filename, opj_cparameters_t *parameters) {
|
||||||
} else if (endian2=='M' && endian1=='L') {
|
} else if (endian2=='M' && endian1=='L') {
|
||||||
bigendian = 0;
|
bigendian = 0;
|
||||||
} else {
|
} else {
|
||||||
|
fclose(f);
|
||||||
fprintf(stderr, "Bad pgx header, please check input file\n");
|
fprintf(stderr, "Bad pgx header, please check input file\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1231,15 +1249,20 @@ int imagetopgx(opj_image_t * image, const char *outfile)
|
||||||
if( total > 256 )
|
if( total > 256 )
|
||||||
{
|
{
|
||||||
name = (char*)malloc(total+1);
|
name = (char*)malloc(total+1);
|
||||||
|
if (name == NULL) {
|
||||||
|
goto fin;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
strncpy(name, outfile, dotpos);
|
strncpy(name, outfile, dotpos);
|
||||||
sprintf(name+dotpos, "_%d.pgx", compno);
|
sprintf(name+dotpos, "_%d.pgx", compno);
|
||||||
fdest = fopen(name, "wb");
|
fdest = fopen(name, "wb");
|
||||||
/* dont need name anymore */
|
/* dont need name anymore */
|
||||||
if( total > 256 ) free(name);
|
|
||||||
if (!fdest)
|
if (!fdest)
|
||||||
{
|
{
|
||||||
|
|
||||||
fprintf(stderr, "ERROR -> failed to open %s for writing\n", name);
|
fprintf(stderr, "ERROR -> failed to open %s for writing\n", name);
|
||||||
|
if( total > 256 ) free(name);
|
||||||
goto fin;
|
goto fin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1271,10 +1294,12 @@ int imagetopgx(opj_image_t * image, const char *outfile)
|
||||||
if( res < 1 )
|
if( res < 1 )
|
||||||
{
|
{
|
||||||
fprintf(stderr, "failed to write 1 byte for %s\n", name);
|
fprintf(stderr, "failed to write 1 byte for %s\n", name);
|
||||||
|
if( total > 256 ) free(name);
|
||||||
goto fin;
|
goto fin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if( total > 256 ) free(name);
|
||||||
fclose(fdest); fdest = NULL;
|
fclose(fdest); fdest = NULL;
|
||||||
}
|
}
|
||||||
fails = 0;
|
fails = 0;
|
||||||
|
@ -1650,6 +1675,7 @@ opj_image_t* pnmtoimage(const char *filename, opj_cparameters_t *parameters) {
|
||||||
{
|
{
|
||||||
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
|
||||||
opj_image_destroy(image);
|
opj_image_destroy(image);
|
||||||
|
fclose(fp);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if(one)
|
if(one)
|
||||||
|
@ -2003,6 +2029,7 @@ static opj_image_t* rawtoimage_common(const char *filename, opj_cparameters_t *p
|
||||||
if (!cmptparm) {
|
if (!cmptparm) {
|
||||||
fprintf(stderr, "Failed to allocate image components parameters !!\n");
|
fprintf(stderr, "Failed to allocate image components parameters !!\n");
|
||||||
fprintf(stderr,"Aborting\n");
|
fprintf(stderr,"Aborting\n");
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/* initialize image components */
|
/* initialize image components */
|
||||||
|
@ -2036,6 +2063,8 @@ static opj_image_t* rawtoimage_common(const char *filename, opj_cparameters_t *p
|
||||||
for (i = 0; i < nloop; i++) {
|
for (i = 0; i < nloop; i++) {
|
||||||
if (!fread(&value, 1, 1, f)) {
|
if (!fread(&value, 1, 1, f)) {
|
||||||
fprintf(stderr,"Error reading raw file. End of file probably reached.\n");
|
fprintf(stderr,"Error reading raw file. End of file probably reached.\n");
|
||||||
|
opj_image_destroy(image);
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
image->comps[compno].data[i] = raw_cp->rawSigned?(char)value:value;
|
image->comps[compno].data[i] = raw_cp->rawSigned?(char)value:value;
|
||||||
|
@ -2052,10 +2081,14 @@ static opj_image_t* rawtoimage_common(const char *filename, opj_cparameters_t *p
|
||||||
unsigned char temp2;
|
unsigned char temp2;
|
||||||
if (!fread(&temp1, 1, 1, f)) {
|
if (!fread(&temp1, 1, 1, f)) {
|
||||||
fprintf(stderr,"Error reading raw file. End of file probably reached.\n");
|
fprintf(stderr,"Error reading raw file. End of file probably reached.\n");
|
||||||
|
opj_image_destroy(image);
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (!fread(&temp2, 1, 1, f)) {
|
if (!fread(&temp2, 1, 1, f)) {
|
||||||
fprintf(stderr,"Error reading raw file. End of file probably reached.\n");
|
fprintf(stderr,"Error reading raw file. End of file probably reached.\n");
|
||||||
|
opj_image_destroy(image);
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if( big_endian )
|
if( big_endian )
|
||||||
|
@ -2072,6 +2105,8 @@ static opj_image_t* rawtoimage_common(const char *filename, opj_cparameters_t *p
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fprintf(stderr,"OpenJPEG cannot encode raw components with bit depth higher than 16 bits.\n");
|
fprintf(stderr,"OpenJPEG cannot encode raw components with bit depth higher than 16 bits.\n");
|
||||||
|
opj_image_destroy(image);
|
||||||
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -729,6 +729,7 @@ opj_image_t* bmptoimage(const char *filename, opj_cparameters_t *parameters)
|
||||||
image = opj_image_create(numcmpts, &cmptparm[0], (numcmpts == 1U) ? OPJ_CLRSPC_GRAY : OPJ_CLRSPC_SRGB);
|
image = opj_image_create(numcmpts, &cmptparm[0], (numcmpts == 1U) ? OPJ_CLRSPC_GRAY : OPJ_CLRSPC_SRGB);
|
||||||
if(!image) {
|
if(!image) {
|
||||||
fclose(IN);
|
fclose(IN);
|
||||||
|
free(pData);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (numcmpts == 4U) {
|
if (numcmpts == 4U) {
|
||||||
|
|
|
@ -391,6 +391,7 @@ static unsigned int get_num_images(char *imgdirpath){
|
||||||
continue;
|
continue;
|
||||||
num_images++;
|
num_images++;
|
||||||
}
|
}
|
||||||
|
closedir(dir);
|
||||||
return num_images;
|
return num_images;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -416,6 +417,7 @@ static int load_images(dircnt_t *dirptr, char *imgdirpath){
|
||||||
strcpy(dirptr->filename[i],content->d_name);
|
strcpy(dirptr->filename[i],content->d_name);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
closedir(dir);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1058,9 +1060,16 @@ static int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *param
|
||||||
lStrLen = (size_t)ftell(lFile);
|
lStrLen = (size_t)ftell(lFile);
|
||||||
fseek(lFile,0,SEEK_SET);
|
fseek(lFile,0,SEEK_SET);
|
||||||
lMatrix = (char *) malloc(lStrLen + 1);
|
lMatrix = (char *) malloc(lStrLen + 1);
|
||||||
|
if (lMatrix == NULL) {
|
||||||
|
fclose(lFile);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
lStrFread = fread(lMatrix, 1, lStrLen, lFile);
|
lStrFread = fread(lMatrix, 1, lStrLen, lFile);
|
||||||
fclose(lFile);
|
fclose(lFile);
|
||||||
if( lStrLen != lStrFread ) return 1;
|
if( lStrLen != lStrFread ) {
|
||||||
|
free(lMatrix);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
lMatrix[lStrLen] = 0;
|
lMatrix[lStrLen] = 0;
|
||||||
lCurrentPtr = lMatrix;
|
lCurrentPtr = lMatrix;
|
||||||
|
@ -1080,6 +1089,10 @@ static int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *param
|
||||||
lMctComp = lNbComp * lNbComp;
|
lMctComp = lNbComp * lNbComp;
|
||||||
lTotalComp = lMctComp + lNbComp;
|
lTotalComp = lMctComp + lNbComp;
|
||||||
lSpace = (float *) malloc((size_t)lTotalComp * sizeof(float));
|
lSpace = (float *) malloc((size_t)lTotalComp * sizeof(float));
|
||||||
|
if(lSpace == NULL) {
|
||||||
|
free(lMatrix);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
lCurrentDoublePtr = lSpace;
|
lCurrentDoublePtr = lSpace;
|
||||||
for (i2=0;i2<lMctComp;++i2) {
|
for (i2=0;i2<lMctComp;++i2) {
|
||||||
lStrLen = strlen(lCurrentPtr) + 1;
|
lStrLen = strlen(lCurrentPtr) + 1;
|
||||||
|
|
Loading…
Reference in New Issue