Skip to content

Commit fdf8903

Browse files
committed
Eliminate unnecessary NULL checks before free()
This programming practice (which exists in other code bases as well) is a by-product of having used early C compilers that did not properly handle free(NULL). All modern compilers should properly handle that. Fixes #398
1 parent 166e342 commit fdf8903

4 files changed

Lines changed: 47 additions & 51 deletions

File tree

tjbench.c

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -304,8 +304,8 @@ static int decomp(unsigned char *srcBuf, unsigned char **jpegBuf,
304304
bailout:
305305
if (file) fclose(file);
306306
if (handle) tjDestroy(handle);
307-
if (dstBuf && dstBufAlloc) free(dstBuf);
308-
if (yuvBuf) free(yuvBuf);
307+
if (dstBufAlloc) free(dstBuf);
308+
free(yuvBuf);
309309
return retval;
310310
}
311311

@@ -502,18 +502,16 @@ static int fullTest(unsigned char *srcBuf, int w, int h, int subsamp,
502502
}
503503

504504
bailout:
505-
if (file) { fclose(file); file = NULL; }
505+
if (file) fclose(file);
506506
if (jpegBuf) {
507-
for (i = 0; i < ntilesw * ntilesh; i++) {
507+
for (i = 0; i < ntilesw * ntilesh; i++)
508508
if (jpegBuf[i]) tjFree(jpegBuf[i]);
509-
jpegBuf[i] = NULL;
510-
}
511-
free(jpegBuf); jpegBuf = NULL;
512509
}
513-
if (yuvBuf) { free(yuvBuf); yuvBuf = NULL; }
514-
if (jpegSize) { free(jpegSize); jpegSize = NULL; }
515-
if (tmpBuf) { free(tmpBuf); tmpBuf = NULL; }
516-
if (handle) { tjDestroy(handle); handle = NULL; }
510+
free(jpegBuf);
511+
free(yuvBuf);
512+
free(jpegSize);
513+
free(tmpBuf);
514+
if (handle) tjDestroy(handle);
517515
return retval;
518516
}
519517

@@ -720,23 +718,21 @@ static int decompTest(char *fileName)
720718
jpegBuf[i] = NULL;
721719
}
722720
free(jpegBuf); jpegBuf = NULL;
723-
if (jpegSize) { free(jpegSize); jpegSize = NULL; }
721+
free(jpegSize); jpegSize = NULL;
724722

725723
if (tilew == w && tileh == h) break;
726724
}
727725

728726
bailout:
729-
if (file) { fclose(file); file = NULL; }
727+
if (file) fclose(file);
730728
if (jpegBuf) {
731-
for (i = 0; i < ntilesw * ntilesh; i++) {
729+
for (i = 0; i < ntilesw * ntilesh; i++)
732730
if (jpegBuf[i]) tjFree(jpegBuf[i]);
733-
jpegBuf[i] = NULL;
734-
}
735-
free(jpegBuf); jpegBuf = NULL;
736731
}
737-
if (jpegSize) { free(jpegSize); jpegSize = NULL; }
738-
if (srcBuf) { free(srcBuf); srcBuf = NULL; }
739-
if (t) { free(t); t = NULL; }
732+
free(jpegBuf);
733+
free(jpegSize);
734+
free(srcBuf);
735+
free(t);
740736
if (handle) { tjDestroy(handle); handle = NULL; }
741737
return retval;
742738
}

tjunittest.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -410,8 +410,8 @@ static void compTest(tjhandle handle, unsigned char **dstBuf,
410410
printf("Done.\n Result in %s\n", tempStr);
411411

412412
bailout:
413-
if (yuvBuf) free(yuvBuf);
414-
if (srcBuf) free(srcBuf);
413+
free(yuvBuf);
414+
free(srcBuf);
415415
}
416416

417417

@@ -478,8 +478,8 @@ static void _decompTest(tjhandle handle, unsigned char *jpegBuf,
478478
printf("\n");
479479

480480
bailout:
481-
if (yuvBuf) free(yuvBuf);
482-
if (dstBuf) free(dstBuf);
481+
free(yuvBuf);
482+
free(dstBuf);
483483
}
484484

485485

@@ -665,7 +665,7 @@ static void bufSizeTest(void)
665665
printf("Done. \n");
666666

667667
bailout:
668-
if (srcBuf) free(srcBuf);
668+
free(srcBuf);
669669
if (dstBuf) tjFree(dstBuf);
670670
if (handle) tjDestroy(handle);
671671
}

turbojpeg-jni.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,9 +1232,9 @@ JNIEXPORT jintArray JNICALL Java_org_libjpegturbo_turbojpeg_TJTransformer_transf
12321232
free(dstBufs);
12331233
}
12341234
SAFE_RELEASE(jsrcBuf, jpegBuf);
1235-
if (jdstBufs) free(jdstBufs);
1236-
if (dstSizes) free(dstSizes);
1237-
if (t) free(t);
1235+
free(jdstBufs);
1236+
free(dstSizes);
1237+
free(t);
12381238
return jdstSizes;
12391239
}
12401240

turbojpeg.c

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@ DLLEXPORT int tjDestroy(tjhandle handle)
432432

433433
DLLEXPORT void tjFree(unsigned char *buf)
434434
{
435-
if (buf) free(buf);
435+
free(buf);
436436
}
437437

438438

@@ -462,7 +462,7 @@ static tjhandle _tjInitCompress(tjinstance *this)
462462

463463
if (setjmp(this->jerr.setjmp_buffer)) {
464464
/* If we get here, the JPEG code has signaled an error. */
465-
if (this) free(this);
465+
free(this);
466466
return NULL;
467467
}
468468

@@ -692,7 +692,7 @@ DLLEXPORT int tjCompress2(tjhandle handle, const unsigned char *srcBuf,
692692

693693
bailout:
694694
if (cinfo->global_state > CSTATE_START) jpeg_abort_compress(cinfo);
695-
if (row_pointer) free(row_pointer);
695+
free(row_pointer);
696696
if (this->jerr.warning) retval = -1;
697697
this->jerr.stopOnWarning = FALSE;
698698
return retval;
@@ -866,13 +866,13 @@ DLLEXPORT int tjEncodeYUVPlanes(tjhandle handle, const unsigned char *srcBuf,
866866

867867
bailout:
868868
if (cinfo->global_state > CSTATE_START) jpeg_abort_compress(cinfo);
869-
if (row_pointer) free(row_pointer);
869+
free(row_pointer);
870870
for (i = 0; i < MAX_COMPONENTS; i++) {
871-
if (tmpbuf[i] != NULL) free(tmpbuf[i]);
872-
if (_tmpbuf[i] != NULL) free(_tmpbuf[i]);
873-
if (tmpbuf2[i] != NULL) free(tmpbuf2[i]);
874-
if (_tmpbuf2[i] != NULL) free(_tmpbuf2[i]);
875-
if (outbuf[i] != NULL) free(outbuf[i]);
871+
free(tmpbuf[i]);
872+
free(_tmpbuf[i]);
873+
free(tmpbuf2[i]);
874+
free(_tmpbuf2[i]);
875+
free(outbuf[i]);
876876
}
877877
if (this->jerr.warning) retval = -1;
878878
this->jerr.stopOnWarning = FALSE;
@@ -1062,10 +1062,10 @@ DLLEXPORT int tjCompressFromYUVPlanes(tjhandle handle,
10621062
bailout:
10631063
if (cinfo->global_state > CSTATE_START) jpeg_abort_compress(cinfo);
10641064
for (i = 0; i < MAX_COMPONENTS; i++) {
1065-
if (tmpbuf[i]) free(tmpbuf[i]);
1066-
if (inbuf[i]) free(inbuf[i]);
1065+
free(tmpbuf[i]);
1066+
free(inbuf[i]);
10671067
}
1068-
if (_tmpbuf) free(_tmpbuf);
1068+
free(_tmpbuf);
10691069
if (this->jerr.warning) retval = -1;
10701070
this->jerr.stopOnWarning = FALSE;
10711071
return retval;
@@ -1130,7 +1130,7 @@ static tjhandle _tjInitDecompress(tjinstance *this)
11301130

11311131
if (setjmp(this->jerr.setjmp_buffer)) {
11321132
/* If we get here, the JPEG code has signaled an error. */
1133-
if (this) free(this);
1133+
free(this);
11341134
return NULL;
11351135
}
11361136

@@ -1313,7 +1313,7 @@ DLLEXPORT int tjDecompress2(tjhandle handle, const unsigned char *jpegBuf,
13131313

13141314
bailout:
13151315
if (dinfo->global_state > DSTATE_START) jpeg_abort_decompress(dinfo);
1316-
if (row_pointer) free(row_pointer);
1316+
free(row_pointer);
13171317
if (this->jerr.warning) retval = -1;
13181318
this->jerr.stopOnWarning = FALSE;
13191319
return retval;
@@ -1519,11 +1519,11 @@ DLLEXPORT int tjDecodeYUVPlanes(tjhandle handle,
15191519

15201520
bailout:
15211521
if (dinfo->global_state > DSTATE_START) jpeg_abort_decompress(dinfo);
1522-
if (row_pointer) free(row_pointer);
1522+
free(row_pointer);
15231523
for (i = 0; i < MAX_COMPONENTS; i++) {
1524-
if (tmpbuf[i] != NULL) free(tmpbuf[i]);
1525-
if (_tmpbuf[i] != NULL) free(_tmpbuf[i]);
1526-
if (inbuf[i] != NULL) free(inbuf[i]);
1524+
free(tmpbuf[i]);
1525+
free(_tmpbuf[i]);
1526+
free(inbuf[i]);
15271527
}
15281528
if (this->jerr.warning) retval = -1;
15291529
this->jerr.stopOnWarning = FALSE;
@@ -1731,10 +1731,10 @@ DLLEXPORT int tjDecompressToYUVPlanes(tjhandle handle,
17311731
bailout:
17321732
if (dinfo->global_state > DSTATE_START) jpeg_abort_decompress(dinfo);
17331733
for (i = 0; i < MAX_COMPONENTS; i++) {
1734-
if (tmpbuf[i]) free(tmpbuf[i]);
1735-
if (outbuf[i]) free(outbuf[i]);
1734+
free(tmpbuf[i]);
1735+
free(outbuf[i]);
17361736
}
1737-
if (_tmpbuf) free(_tmpbuf);
1737+
free(_tmpbuf);
17381738
if (this->jerr.warning) retval = -1;
17391739
this->jerr.stopOnWarning = FALSE;
17401740
return retval;
@@ -1979,7 +1979,7 @@ DLLEXPORT int tjTransform(tjhandle handle, const unsigned char *jpegBuf,
19791979
bailout:
19801980
if (cinfo->global_state > CSTATE_START) jpeg_abort_compress(cinfo);
19811981
if (dinfo->global_state > DSTATE_START) jpeg_abort_decompress(dinfo);
1982-
if (xinfo) free(xinfo);
1982+
free(xinfo);
19831983
if (this->jerr.warning) retval = -1;
19841984
this->jerr.stopOnWarning = FALSE;
19851985
return retval;
@@ -2074,7 +2074,7 @@ DLLEXPORT unsigned char *tjLoadImage(const char *filename, int *width,
20742074
bailout:
20752075
if (handle) tjDestroy(handle);
20762076
if (file) fclose(file);
2077-
if (retval < 0 && dstBuf) { free(dstBuf); dstBuf = NULL; }
2077+
if (retval < 0) { free(dstBuf); dstBuf = NULL; }
20782078
return dstBuf;
20792079
}
20802080

0 commit comments

Comments
 (0)