G'day, I've been steering clear of IM, partially as much of its code is from third-party libraries, and partially because activity on the project SVN tree was so low.
However, I notice that there were three SVN commits in the past few day, so, I've started looking at non-third-party code as a candidate for change. I'm trying to reduce GCC's warnings, without altering the code semantics in any way. I've found that there are a number of cases of the warning "-Wmisleading-indent", relating to the code: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); Looking at the documentation for free(3), it states that NULL (0) is explicitly allowed as a parameter, and the call will be a no-op. The GNU documentation states that this has been formalised at least in C89, as well as all C and C++ standards since: 30 years ago. I know that during the '80s, there were some C compilers that generated code which crashed if free(NULL) was called, but I believe that in the modern era, this concern is no longer valid. Similarly, I believe that the compiler toolchains handle the NULL case without heavily penalising the caller (perhaps by defining "free" as a macro internally, and doing the NULL check in the macro expansion before attempting a call). Therefore, the above code could be rewritten as: free(cm20); free(cm02); free(cm11); This has three major benefits: 1. The text change to the code is very localised and easy to review, and there is no change to the semantics of the program; 2. The code is much easier to read, and to statically analyse. If the code was in a testing regime where every code path had to be exercised, each translation such as the one above would cut down the number of combinations to be tried by a factor of 8; and 3. The change eliminates the "-Wmisleading-indent" warning, which is a particularly verbose item. For IM r757, the number of warning lines (excluding the common header) drops from 275 lines to 215 lines, just by patching one file. Attached are the patch, and the "parse-build.lua" output for IM before and after applying the patch. cheers, sur-behoffski (Brenton Hoff) programmer, Grouse Software
* No diagnostics for: #include expects "FILENAME" or <FILENAME> missing binary operator before token "(" converting to non-pointer type <TYPE> from NULL [-Wconversion-null] <FUNC> is deprecated [-Wdeprecated-declarations] <FUNC1> is deprecated: Use <FUNC2> instead [-Wdeprecated-declarations] assignment discards <TYPE> qualifier from pointer target type [-Wdiscarded-qualifiers] too many arguments for format [-Wformat-extra-args] <FUNC> may write a terminating nul past the end of the destination [-Wformat-overflow=] <DIRECTIVE> directive writing 1 byte into a region of size between 0 and <BYTECOUNT> [-Wformat-overflow=] <DIRECTIVE> directive writing <BYTECOUNT1> bytes into a region of size between <BYTECOUNT2> and <BYTECOUNT3> [-Wformat-overflow=] <DIRECTIVE> directive writing between <BYTECOUNT1> and <BYTECOUNT2> bytes into a region of size between <BYTECOUNT3> and <BYTECOUNT4> [-Wformat-overflow=] <DIRECTIVE> directive writing up to <BYTECOUNT1> bytes into a region of size <BYTECOUNT2> [-Wformat-overflow=] format not a string literal and no format arguments [-Wformat-security] assignment from incompatible pointer type [-Wincompatible-pointer-types] initialization from incompatible pointer type [-Wincompatible-pointer-types] passing argument <NUM> of <FUNC> from incompatible pointer type [-Wincompatible-pointer-types] <VAR> may be used uninitialized in this function [-Wmaybe-uninitialized] missing braces around initializer [-Wmissing-braces] suggest parentheses around arithmetic in operand of '|' [-Wparentheses] suggest explicit braces to avoid ambiguous 'else' [-Wparentheses] suggest parentheses around '&&' within '||' [-Wparentheses] no return statement in function returning non-void [-Wreturn-type] control reaches end of non-void function [-Wreturn-type] this 'else' clause does not guard... [-Wmisleading-indentation] this 'for' clause does not guard... [-Wmisleading-indentation] this 'while' clause does not guard... [-Wmisleading-indentation] ignoring #pragma omp critical [-Wunknown-pragmas] ignoring #pragma omp for [-Wunknown-pragmas] ignoring #pragma omp parallel [-Wunknown-pragmas] ignoring #pragma omp section [-Wunknown-pragmas] ignoring #pragma warning [-Wunknown-pragmas] dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] enumeration value <ENUM> not handled in switch [-Wswitch] <EXPRESSION> is used uninitialized in this function [-Wuninitialized] <VAR> defined but not used [-Wunused-const-variable=] <FUNC> declared <TYPE> but never defined [-Wunused-function] label <LABEL> defined but not used [-Wunused-label] value computed is not used [-Wunused-value] unused variable <VAR> [-Wunused-variable] deprecated conversion from string constant to <TYPE> [-Wwrite-strings] (End of list.) suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]: lua5/imlua_process.c:55:[Function:imluaProcessSplitComplex]: lua5/imlua_process.c:61:[Function:imluaProcessMergeComplex]: lua5/imlua_process.c:55:[Function:imluaProcessAutoCovariance]: lua5/imlua_process.c:55:[Function:imluaProcessNormalizeComponents]: lua5/imlua_process.c:55:[Function:imluaProcessNormDiffRatio]: lua5/imlua_process.c:55:[Function:imluaProcessSplitComplex]: lua5/imlua_process.c:61:[Function:imluaProcessMergeComplex]: lua5/imlua_process.c:55:[Function:imluaProcessAutoCovariance]: lua5/imlua_process.c:55:[Function:imluaProcessNormalizeComponents]: lua5/imlua_process.c:55:[Function:imluaProcessNormDiffRatio]: comparison between <ENUM1> and <ENUM2> [-Wenum-compare]: libexif/fuji/mnote-fuji-entry.c:233:[Function:mnote_fuji_entry_get_value]: ExifTag {aka const enum <anonymous>} MnoteFujiTag {aka enum _MnoteFujiTag} libexif/olympus/mnote-olympus-entry.c:430:[Function:mnote_olympus_entry_get_value]: ExifTag {aka const enum <anonymous>} MnoteOlympusTag {aka enum _MnoteOlympusTag} libexif/olympus/mnote-olympus-entry.c:500:[Function:mnote_olympus_entry_get_value]: ExifTag {aka const enum <anonymous>} MnoteOlympusTag {aka enum _MnoteOlympusTag} libexif/pentax/mnote-pentax-entry.c:347:[Function:mnote_pentax_entry_get_value]: ExifTag {aka const enum <anonymous>} MnotePentaxTag {aka enum _MnotePentaxTag} libexif/pentax/mnote-pentax-entry.c:371:[Function:mnote_pentax_entry_get_value]: ExifTag {aka const enum <anonymous>} MnotePentaxTag {aka enum _MnotePentaxTag} format <FMT> expects argument of type <TYPE1>, but argument <NUM> has type <TYPE2> [-Wformat=]: libtiff/tif_predict.c:645:[Function:PredictorEncodeTile]: %u unsigned int 4 tmsize_t {aka long unsigned int} libexif/fuji/exif-mnote-data-fuji.c:227:[Function:exif_mnote_data_fuji_load]: %u unsigned int 5 size_t {aka long unsigned int} libexif/canon/exif-mnote-data-canon.c:270:[Function:exif_mnote_data_canon_load]: %u unsigned int 5 size_t {aka long unsigned int} libexif/olympus/exif-mnote-data-olympus.c:485:[Function:exif_mnote_data_olympus_load]: %u unsigned int 5 size_t {aka long unsigned int} libexif/pentax/exif-mnote-data-pentax.c:310:[Function:exif_mnote_data_pentax_load]: %u unsigned int 5 size_t {aka long unsigned int} libjasper/base/jas_debug.c:128:[Function:jas_memdump]: %x unsigned int 3 size_t {aka long unsigned int} libjasper/jpc/jpc_mqenc.c:388:[Function:jpc_mqenc_dump]: %d int 3 long int libjasper/jpc/jpc_mqdec.c:303:[Function:jpc_mqdec_dump]: %d int 3 long int libjasper/jpc/jpc_mqdec.c:304:[Function:jpc_mqdec_dump]: %d int 3 long int implicit declaration of function <FUNC> [-Wimplicit-function-declaration]: libjasper/jpc/jpc_qmfb.c:1618:[Function:jpc_ft_synthesize]: jas_do_progress implicit declaration of function <FUNC1>; did you mean <FUNC2>? [-Wimplicit-function-declaration]: libjasper/base/jas_getopt.c:129:[Function:jas_getopt]: jas_eprintf vsnprintf libjasper/jpc/jpc_qmfb.c:1619:[Function:jpc_ft_synthesize]: jas_test_abort jas_seq_start libjasper/jpc/jpc_tsfb.c:124:[Function:jpc_tsfb_analyze]: jpc_tsfb_analyze2 jpc_tsfb_analyze libjasper/jpc/jpc_tsfb.c:151:[Function:jpc_tsfb_synthesize]: jpc_tsfb_synthesize2 jpc_tsfb_synthesize libjasper/jpc/jpc_t1dec.c:248:[Function:jpc_dec_decodecblk]: jas_eprintf vsnprintf cast to pointer from integer of different size [-Wint-to-pointer-cast]: tiff_binfile.c:74:[Function:TIFFFdOpen]: tif = TIFFClientOpen(name, mode, (thandle_t) fd, iTIFFReadProc, iTIFFWriteProc, im_format_tiff.cpp:693:[MemeberFunction:virtual void* imFileFormatTIFF::Handle(int)]: return (void*)this->tiff->tif_fd; <VAR> is usually a function [-Wmain]: libjpeg/jdmainct.c:162:[Function:alloc_funny_pointers]: main libjpeg/jdmainct.c:203:[Function:make_funny_pointers]: main libjpeg/jdmainct.c:243:[Function:set_wraparound_pointers]: main libjpeg/jdmainct.c:272:[Function:set_bottom_pointers]: main libjpeg/jdmainct.c:309:[Function:start_pass_main]: main libjpeg/jdmainct.c:349:[Function:process_data_simple_main]: main libjpeg/jdmainct.c:389:[Function:process_data_context_main]: main libjpeg/jdmainct.c:478:[Function:jinit_d_main_controller]: main libjpeg/jcmainct.c:71:[Function:start_pass_main]: main libjpeg/jcmainct.c:117:[Function:process_data_simple_main]: main libjpeg/jcmainct.c:247:[Function:jinit_c_main_controller]: main the use of `tmpnam' is dangerous, better use `mkstemp': jas_stream.c:[At:(.text+0x6c1)]: suggest parentheses around assignment used as truth value [-Wparentheses]: libjasper/base/jas_image.c:230:[Function:jas_box_alloc]: if ( box->buf = (uint_fast8_t *) jas_malloc( size ) ) comparison between pointer and zero character constant [-Wpointer-compare]: libjasper/jpc/jpc_util.c:105:[Function:jpc_atoaf]: libjasper/jpc/jpc_util.c:123:[Function:jpc_atoaf]: cast from pointer to integer of different size [-Wpointer-to-int-cast]: libjasper/base/jas_image.c:232:[Function:jas_box_alloc]: return (bool) box->buf; libjasper/jpc/jpc_t1enc.c:135:[Function:jpc_enc_enccblks]: jas_do_progress( (int) lvl, (int) (endlvls-1), "jpc: encode" ); libjasper/jpc/jpc_t1enc.c:135:[Function:jpc_enc_enccblks]: jas_do_progress( (int) lvl, (int) (endlvls-1), "jpc: encode" ); <VAR> will be initialized after [-Wreorder]: im_format_jp2.cpp:109:[Constructor:imFileFormatJP2::imFileFormatJP2(const imFormat*)]: imFileFormatJP2::image jas_image_t *image; ^~~~~ im_format_jp2.cpp:108:17: warning: 'jas_stream_t* imFileFormatJP2::stream' [-Wreorder] jas_stream_t *stream; ^~~~~~ im_format_jp2.cpp:112:3: warning: when initialized here [-Wreorder] imFileFormatJP2(const imFormat* _iformat) : imFileFormatBase(_iformat), image(0), stream(0), fmtid(-1) {} ^~~~~~~~~~~~~~~ im_format_jp2.cpp:108:[Constructor:imFileFormatJP2::imFileFormatJP2(const imFormat*)]: imFileFormatJP2::stream jas_stream_t *stream; ^~~~~~ im_format_jp2.cpp:107:7: warning: 'int imFileFormatJP2::fmtid' [-Wreorder] int fmtid; ^~~~~ im_format_jp2.cpp:112:3: warning: when initialized here [-Wreorder] imFileFormatJP2(const imFormat* _iformat) : imFileFormatBase(_iformat), image(0), stream(0), fmtid(-1) {} ^~~~~~~~~~~~~~~ case value <LABEL> not in enumerated type <ENUM> [-Wswitch]: libexif/exif-entry.c:1199:[Function:exif_entry_get_value]: 0 ExifTag {aka enum <anonymous>} libexif/exif-entry.c:1226:[Function:exif_entry_get_value]: 5 ExifTag {aka enum <anonymous>} libexif/exif-entry.c:1239:[Function:exif_entry_get_value]: 7 ExifTag {aka enum <anonymous>} this 'if' clause does not guard... [-Wmisleading-indentation]: libtiff/tif_read.c:495:[Function:TIFFFillStrip]: if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount) ^~ libtiff/tif_read.c:498:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if ((tif->tif_flags&TIFF_NOREADRAW)==0) ^~ libtiff/tif_read.c:798:[Function:TIFFFillTile]: if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount) ^~ libtiff/tif_read.c:801:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if ((tif->tif_flags&TIFF_NOREADRAW)==0) ^~ libtiff/tif_read.c:960:[Function:TIFFStartStrip]: if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount) ^~ libtiff/tif_read.c:963:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if ((tif->tif_flags & TIFF_CODERSETUP) == 0) { ^~ libtiff/tif_dirread.c:4272:[Function:EstimateStripByteCounts]: if( !_TIFFFillStriles( tif ) ) ^~ libtiff/tif_dirread.c:4275:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if (td->td_stripbytecount) ^~ process/im_analyze.cpp:727:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:727:27: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:737:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:737:27: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:747:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:747:27: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:840:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:840:29: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:969:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:969:25: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:727:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:727:27: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:737:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:737:27: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:747:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:747:27: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:840:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:840:29: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:969:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:969:25: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ <FUNC> defined but not used [-Wunused-function]: libjasper/jpc/jpc_enc.c:886:[Function:jpc_enc_encodemainbody]: jpc_calcssexp libjasper/jpc/jpc_enc.c:870:[Function:jpc_enc_encodemainbody]: jpc_calcssmant ignoring return value of <FUNC>, declared with attribute warn_unused_result [-Wunused-result]: libjasper/base/jas_stream.c:369:[Function:jas_stream_tmpfile]: tmpnam statement with no effect [-Wunused-value]: libexif/fuji/mnote-fuji-tag.c:46:[Function:mnote_fuji_tag_get_title]: # define bindtextdomain(Domain,Directory) (Domain) libexif/fuji/mnote-fuji-tag.c:46:[Function:mnote_fuji_tag_get_description]: # define bindtextdomain(Domain,Directory) (Domain) libexif/canon/mnote-canon-tag.c:46:[Function:mnote_canon_tag_get_title]: # define bindtextdomain(Domain,Directory) (Domain) libexif/canon/mnote-canon-tag.c:46:[Function:mnote_canon_tag_get_description]: # define bindtextdomain(Domain,Directory) (Domain) libexif/olympus/mnote-olympus-tag.c:46:[Function:mnote_olympus_tag_get_title]: # define bindtextdomain(Domain,Directory) (Domain) libexif/olympus/mnote-olympus-tag.c:46:[Function:mnote_olympus_tag_get_description]: # define bindtextdomain(Domain,Directory) (Domain) libexif/pentax/mnote-pentax-tag.c:46:[Function:mnote_pentax_tag_get_title]: # define bindtextdomain(Domain,Directory) (Domain) libexif/pentax/mnote-pentax-tag.c:46:[Function:mnote_pentax_tag_get_description]: # define bindtextdomain(Domain,Directory) (Domain) libexif/exif-entry.c:46:[Function:exif_entry_get_value]: # define bindtextdomain(Domain,Directory) (Domain) libexif/exif-format.c:46:[Function:exif_format_get_name]: # define bindtextdomain(Domain,Directory) (Domain) libexif/exif-tag.c:46:[Function:exif_tag_get_title_in_ifd]: # define bindtextdomain(Domain,Directory) (Domain) libexif/exif-tag.c:46:[Function:exif_tag_get_description_in_ifd]: # define bindtextdomain(Domain,Directory) (Domain) <VAR> defined but not used [-Wunused-variable]: libjasper/jp2/jp2_cod.h:132:[#included-from:libjasper/jp2/jp2_cod.h:132]: xmp_uuid libjasper/jp2/jp2_cod.h:125:[#included-from:libjasper/jp2/jp2_cod.h:125]: msi_uuid libjasper/jp2/jp2_cod.h:132:[#included-from:libjasper/jp2/jp2_cod.h:132]: xmp_uuid variable <VAR> set but not used [-Wunused-but-set-variable]: libtiff/tif_open.c:106:[Function:TIFFClientOpen]: n libexif/olympus/mnote-olympus-entry.c:343:[Function:mnote_olympus_entry_get_value]: d libjasper/base/jas_icc.c:1072:[Function:jas_icctxtdesc_copy]: txtdesc libjasper/base/jas_icc.c:1259:[Function:jas_icclut8_copy]: lut8 libjasper/base/jas_image.c:1360:[Function:jas_image_chclrspc]: numoutchans libjasper/base/jas_image.c:1353:[Function:jas_image_chclrspc]: numinauxchans libjasper/jp2/jp2_dec.c:115:[Function:jp2_decode]: cdefd libjasper/jpc/jpc_t1enc.c:210:[Function:jpc_enc_enccblk]: rlvl libjasper/jpc/jpc_t1enc.c:205:[Function:jpc_enc_enccblk]: ret libjasper/jpc/jpc_dec.c:438:[Function:jpc_dec_process_crg]: crg libjasper/jpc/jpc_dec.c:702:[Function:jpc_dec_tileinit]: brcbgyend libjasper/jpc/jpc_enc.c:873:[Function:jpc_calcssmant]: e libjasper/jpc/jpc_enc.c:904:[Function:jpc_enc_encodemainhdr]: mctsynweight libjasper/jpc/jpc_enc.c:1121:[Function:jpc_enc_encodemainbody]: numbytes libjasper/jpc/jpc_enc.c:1107:[Function:jpc_enc_encodemainbody]: tiley libjasper/jpc/jpc_enc.c:1106:[Function:jpc_enc_encodemainbody]: tilex warning: ISO C++ forbids converting a string constant to <TYPE> [-Wwrite-strings]: im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char*
* No diagnostics for: #include expects "FILENAME" or <FILENAME> missing binary operator before token "(" converting to non-pointer type <TYPE> from NULL [-Wconversion-null] <FUNC> is deprecated [-Wdeprecated-declarations] <FUNC1> is deprecated: Use <FUNC2> instead [-Wdeprecated-declarations] assignment discards <TYPE> qualifier from pointer target type [-Wdiscarded-qualifiers] too many arguments for format [-Wformat-extra-args] <FUNC> may write a terminating nul past the end of the destination [-Wformat-overflow=] <DIRECTIVE> directive writing 1 byte into a region of size between 0 and <BYTECOUNT> [-Wformat-overflow=] <DIRECTIVE> directive writing <BYTECOUNT1> bytes into a region of size between <BYTECOUNT2> and <BYTECOUNT3> [-Wformat-overflow=] <DIRECTIVE> directive writing between <BYTECOUNT1> and <BYTECOUNT2> bytes into a region of size between <BYTECOUNT3> and <BYTECOUNT4> [-Wformat-overflow=] <DIRECTIVE> directive writing up to <BYTECOUNT1> bytes into a region of size <BYTECOUNT2> [-Wformat-overflow=] format not a string literal and no format arguments [-Wformat-security] assignment from incompatible pointer type [-Wincompatible-pointer-types] initialization from incompatible pointer type [-Wincompatible-pointer-types] passing argument <NUM> of <FUNC> from incompatible pointer type [-Wincompatible-pointer-types] <VAR> may be used uninitialized in this function [-Wmaybe-uninitialized] missing braces around initializer [-Wmissing-braces] suggest parentheses around arithmetic in operand of '|' [-Wparentheses] suggest explicit braces to avoid ambiguous 'else' [-Wparentheses] suggest parentheses around '&&' within '||' [-Wparentheses] no return statement in function returning non-void [-Wreturn-type] control reaches end of non-void function [-Wreturn-type] this 'else' clause does not guard... [-Wmisleading-indentation] this 'for' clause does not guard... [-Wmisleading-indentation] this 'while' clause does not guard... [-Wmisleading-indentation] ignoring #pragma omp critical [-Wunknown-pragmas] ignoring #pragma omp for [-Wunknown-pragmas] ignoring #pragma omp parallel [-Wunknown-pragmas] ignoring #pragma omp section [-Wunknown-pragmas] ignoring #pragma warning [-Wunknown-pragmas] dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] enumeration value <ENUM> not handled in switch [-Wswitch] <EXPRESSION> is used uninitialized in this function [-Wuninitialized] <VAR> defined but not used [-Wunused-const-variable=] <FUNC> declared <TYPE> but never defined [-Wunused-function] label <LABEL> defined but not used [-Wunused-label] value computed is not used [-Wunused-value] unused variable <VAR> [-Wunused-variable] deprecated conversion from string constant to <TYPE> [-Wwrite-strings] (End of list.) suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]: lua5/imlua_process.c:55:[Function:imluaProcessSplitComplex]: lua5/imlua_process.c:61:[Function:imluaProcessMergeComplex]: lua5/imlua_process.c:55:[Function:imluaProcessAutoCovariance]: lua5/imlua_process.c:55:[Function:imluaProcessNormalizeComponents]: lua5/imlua_process.c:55:[Function:imluaProcessNormDiffRatio]: lua5/imlua_process.c:55:[Function:imluaProcessSplitComplex]: lua5/imlua_process.c:61:[Function:imluaProcessMergeComplex]: lua5/imlua_process.c:55:[Function:imluaProcessAutoCovariance]: lua5/imlua_process.c:55:[Function:imluaProcessNormalizeComponents]: lua5/imlua_process.c:55:[Function:imluaProcessNormDiffRatio]: comparison between <ENUM1> and <ENUM2> [-Wenum-compare]: libexif/fuji/mnote-fuji-entry.c:233:[Function:mnote_fuji_entry_get_value]: ExifTag {aka const enum <anonymous>} MnoteFujiTag {aka enum _MnoteFujiTag} libexif/olympus/mnote-olympus-entry.c:430:[Function:mnote_olympus_entry_get_value]: ExifTag {aka const enum <anonymous>} MnoteOlympusTag {aka enum _MnoteOlympusTag} libexif/olympus/mnote-olympus-entry.c:500:[Function:mnote_olympus_entry_get_value]: ExifTag {aka const enum <anonymous>} MnoteOlympusTag {aka enum _MnoteOlympusTag} libexif/pentax/mnote-pentax-entry.c:347:[Function:mnote_pentax_entry_get_value]: ExifTag {aka const enum <anonymous>} MnotePentaxTag {aka enum _MnotePentaxTag} libexif/pentax/mnote-pentax-entry.c:371:[Function:mnote_pentax_entry_get_value]: ExifTag {aka const enum <anonymous>} MnotePentaxTag {aka enum _MnotePentaxTag} format <FMT> expects argument of type <TYPE1>, but argument <NUM> has type <TYPE2> [-Wformat=]: libtiff/tif_predict.c:645:[Function:PredictorEncodeTile]: %u unsigned int 4 tmsize_t {aka long unsigned int} libexif/fuji/exif-mnote-data-fuji.c:227:[Function:exif_mnote_data_fuji_load]: %u unsigned int 5 size_t {aka long unsigned int} libexif/canon/exif-mnote-data-canon.c:270:[Function:exif_mnote_data_canon_load]: %u unsigned int 5 size_t {aka long unsigned int} libexif/olympus/exif-mnote-data-olympus.c:485:[Function:exif_mnote_data_olympus_load]: %u unsigned int 5 size_t {aka long unsigned int} libexif/pentax/exif-mnote-data-pentax.c:310:[Function:exif_mnote_data_pentax_load]: %u unsigned int 5 size_t {aka long unsigned int} libjasper/base/jas_debug.c:128:[Function:jas_memdump]: %x unsigned int 3 size_t {aka long unsigned int} libjasper/jpc/jpc_mqenc.c:388:[Function:jpc_mqenc_dump]: %d int 3 long int libjasper/jpc/jpc_mqdec.c:303:[Function:jpc_mqdec_dump]: %d int 3 long int libjasper/jpc/jpc_mqdec.c:304:[Function:jpc_mqdec_dump]: %d int 3 long int implicit declaration of function <FUNC> [-Wimplicit-function-declaration]: libjasper/jpc/jpc_qmfb.c:1618:[Function:jpc_ft_synthesize]: jas_do_progress implicit declaration of function <FUNC1>; did you mean <FUNC2>? [-Wimplicit-function-declaration]: libjasper/base/jas_getopt.c:129:[Function:jas_getopt]: jas_eprintf vsnprintf libjasper/jpc/jpc_qmfb.c:1619:[Function:jpc_ft_synthesize]: jas_test_abort jas_seq_start libjasper/jpc/jpc_tsfb.c:124:[Function:jpc_tsfb_analyze]: jpc_tsfb_analyze2 jpc_tsfb_analyze libjasper/jpc/jpc_tsfb.c:151:[Function:jpc_tsfb_synthesize]: jpc_tsfb_synthesize2 jpc_tsfb_synthesize libjasper/jpc/jpc_t1dec.c:248:[Function:jpc_dec_decodecblk]: jas_eprintf vsnprintf cast to pointer from integer of different size [-Wint-to-pointer-cast]: tiff_binfile.c:74:[Function:TIFFFdOpen]: tif = TIFFClientOpen(name, mode, (thandle_t) fd, iTIFFReadProc, iTIFFWriteProc, im_format_tiff.cpp:693:[MemeberFunction:virtual void* imFileFormatTIFF::Handle(int)]: return (void*)this->tiff->tif_fd; <VAR> is usually a function [-Wmain]: libjpeg/jdmainct.c:162:[Function:alloc_funny_pointers]: main libjpeg/jdmainct.c:203:[Function:make_funny_pointers]: main libjpeg/jdmainct.c:243:[Function:set_wraparound_pointers]: main libjpeg/jdmainct.c:272:[Function:set_bottom_pointers]: main libjpeg/jdmainct.c:309:[Function:start_pass_main]: main libjpeg/jdmainct.c:349:[Function:process_data_simple_main]: main libjpeg/jdmainct.c:389:[Function:process_data_context_main]: main libjpeg/jdmainct.c:478:[Function:jinit_d_main_controller]: main libjpeg/jcmainct.c:71:[Function:start_pass_main]: main libjpeg/jcmainct.c:117:[Function:process_data_simple_main]: main libjpeg/jcmainct.c:247:[Function:jinit_c_main_controller]: main the use of `tmpnam' is dangerous, better use `mkstemp': jas_stream.c:[At:(.text+0x6c1)]: suggest parentheses around assignment used as truth value [-Wparentheses]: libjasper/base/jas_image.c:230:[Function:jas_box_alloc]: if ( box->buf = (uint_fast8_t *) jas_malloc( size ) ) comparison between pointer and zero character constant [-Wpointer-compare]: libjasper/jpc/jpc_util.c:105:[Function:jpc_atoaf]: libjasper/jpc/jpc_util.c:123:[Function:jpc_atoaf]: cast from pointer to integer of different size [-Wpointer-to-int-cast]: libjasper/base/jas_image.c:232:[Function:jas_box_alloc]: return (bool) box->buf; libjasper/jpc/jpc_t1enc.c:135:[Function:jpc_enc_enccblks]: jas_do_progress( (int) lvl, (int) (endlvls-1), "jpc: encode" ); libjasper/jpc/jpc_t1enc.c:135:[Function:jpc_enc_enccblks]: jas_do_progress( (int) lvl, (int) (endlvls-1), "jpc: encode" ); <VAR> will be initialized after [-Wreorder]: im_format_jp2.cpp:109:[Constructor:imFileFormatJP2::imFileFormatJP2(const imFormat*)]: imFileFormatJP2::image jas_image_t *image; ^~~~~ im_format_jp2.cpp:108:17: warning: 'jas_stream_t* imFileFormatJP2::stream' [-Wreorder] jas_stream_t *stream; ^~~~~~ im_format_jp2.cpp:112:3: warning: when initialized here [-Wreorder] imFileFormatJP2(const imFormat* _iformat) : imFileFormatBase(_iformat), image(0), stream(0), fmtid(-1) {} ^~~~~~~~~~~~~~~ im_format_jp2.cpp:108:[Constructor:imFileFormatJP2::imFileFormatJP2(const imFormat*)]: imFileFormatJP2::stream jas_stream_t *stream; ^~~~~~ im_format_jp2.cpp:107:7: warning: 'int imFileFormatJP2::fmtid' [-Wreorder] int fmtid; ^~~~~ im_format_jp2.cpp:112:3: warning: when initialized here [-Wreorder] imFileFormatJP2(const imFormat* _iformat) : imFileFormatBase(_iformat), image(0), stream(0), fmtid(-1) {} ^~~~~~~~~~~~~~~ case value <LABEL> not in enumerated type <ENUM> [-Wswitch]: libexif/exif-entry.c:1199:[Function:exif_entry_get_value]: 0 ExifTag {aka enum <anonymous>} libexif/exif-entry.c:1226:[Function:exif_entry_get_value]: 5 ExifTag {aka enum <anonymous>} libexif/exif-entry.c:1239:[Function:exif_entry_get_value]: 7 ExifTag {aka enum <anonymous>} this 'if' clause does not guard... [-Wmisleading-indentation]: libtiff/tif_read.c:495:[Function:TIFFFillStrip]: if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount) ^~ libtiff/tif_read.c:498:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if ((tif->tif_flags&TIFF_NOREADRAW)==0) ^~ libtiff/tif_read.c:798:[Function:TIFFFillTile]: if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount) ^~ libtiff/tif_read.c:801:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if ((tif->tif_flags&TIFF_NOREADRAW)==0) ^~ libtiff/tif_read.c:960:[Function:TIFFStartStrip]: if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount) ^~ libtiff/tif_read.c:963:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if ((tif->tif_flags & TIFF_CODERSETUP) == 0) { ^~ libtiff/tif_dirread.c:4272:[Function:EstimateStripByteCounts]: if( !_TIFFFillStriles( tif ) ) ^~ libtiff/tif_dirread.c:4275:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' if (td->td_stripbytecount) ^~ <FUNC> defined but not used [-Wunused-function]: libjasper/jpc/jpc_enc.c:886:[Function:jpc_enc_encodemainbody]: jpc_calcssexp libjasper/jpc/jpc_enc.c:870:[Function:jpc_enc_encodemainbody]: jpc_calcssmant ignoring return value of <FUNC>, declared with attribute warn_unused_result [-Wunused-result]: libjasper/base/jas_stream.c:369:[Function:jas_stream_tmpfile]: tmpnam statement with no effect [-Wunused-value]: libexif/fuji/mnote-fuji-tag.c:46:[Function:mnote_fuji_tag_get_title]: # define bindtextdomain(Domain,Directory) (Domain) libexif/fuji/mnote-fuji-tag.c:46:[Function:mnote_fuji_tag_get_description]: # define bindtextdomain(Domain,Directory) (Domain) libexif/canon/mnote-canon-tag.c:46:[Function:mnote_canon_tag_get_title]: # define bindtextdomain(Domain,Directory) (Domain) libexif/canon/mnote-canon-tag.c:46:[Function:mnote_canon_tag_get_description]: # define bindtextdomain(Domain,Directory) (Domain) libexif/olympus/mnote-olympus-tag.c:46:[Function:mnote_olympus_tag_get_title]: # define bindtextdomain(Domain,Directory) (Domain) libexif/olympus/mnote-olympus-tag.c:46:[Function:mnote_olympus_tag_get_description]: # define bindtextdomain(Domain,Directory) (Domain) libexif/pentax/mnote-pentax-tag.c:46:[Function:mnote_pentax_tag_get_title]: # define bindtextdomain(Domain,Directory) (Domain) libexif/pentax/mnote-pentax-tag.c:46:[Function:mnote_pentax_tag_get_description]: # define bindtextdomain(Domain,Directory) (Domain) libexif/exif-entry.c:46:[Function:exif_entry_get_value]: # define bindtextdomain(Domain,Directory) (Domain) libexif/exif-format.c:46:[Function:exif_format_get_name]: # define bindtextdomain(Domain,Directory) (Domain) libexif/exif-tag.c:46:[Function:exif_tag_get_title_in_ifd]: # define bindtextdomain(Domain,Directory) (Domain) libexif/exif-tag.c:46:[Function:exif_tag_get_description_in_ifd]: # define bindtextdomain(Domain,Directory) (Domain) <VAR> defined but not used [-Wunused-variable]: libjasper/jp2/jp2_cod.h:132:[#included-from:libjasper/jp2/jp2_cod.h:132]: xmp_uuid libjasper/jp2/jp2_cod.h:125:[#included-from:libjasper/jp2/jp2_cod.h:125]: msi_uuid libjasper/jp2/jp2_cod.h:132:[#included-from:libjasper/jp2/jp2_cod.h:132]: xmp_uuid variable <VAR> set but not used [-Wunused-but-set-variable]: libtiff/tif_open.c:106:[Function:TIFFClientOpen]: n libexif/olympus/mnote-olympus-entry.c:343:[Function:mnote_olympus_entry_get_value]: d libjasper/base/jas_icc.c:1072:[Function:jas_icctxtdesc_copy]: txtdesc libjasper/base/jas_icc.c:1259:[Function:jas_icclut8_copy]: lut8 libjasper/base/jas_image.c:1360:[Function:jas_image_chclrspc]: numoutchans libjasper/base/jas_image.c:1353:[Function:jas_image_chclrspc]: numinauxchans libjasper/jp2/jp2_dec.c:115:[Function:jp2_decode]: cdefd libjasper/jpc/jpc_t1enc.c:210:[Function:jpc_enc_enccblk]: rlvl libjasper/jpc/jpc_t1enc.c:205:[Function:jpc_enc_enccblk]: ret libjasper/jpc/jpc_dec.c:438:[Function:jpc_dec_process_crg]: crg libjasper/jpc/jpc_dec.c:702:[Function:jpc_dec_tileinit]: brcbgyend libjasper/jpc/jpc_enc.c:873:[Function:jpc_calcssmant]: e libjasper/jpc/jpc_enc.c:904:[Function:jpc_enc_encodemainhdr]: mctsynweight libjasper/jpc/jpc_enc.c:1121:[Function:jpc_enc_encodemainbody]: numbytes libjasper/jpc/jpc_enc.c:1107:[Function:jpc_enc_encodemainbody]: tiley libjasper/jpc/jpc_enc.c:1106:[Function:jpc_enc_encodemainbody]: tilex warning: ISO C++ forbids converting a string constant to <TYPE> [-Wwrite-strings]: im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char*
Index: src/process/im_analyze.cpp =================================================================== --- src/process/im_analyze.cpp (revision 757) +++ src/process/im_analyze.cpp (working copy) @@ -548,8 +548,7 @@ if (data_cy) data_cy[i] /= (double)data_area[i]; } - if (local_data_area) - free(local_data_area); + free(local_data_area); imProcessCounterEnd(counter); return processing; @@ -704,8 +703,8 @@ if (!ret) { - if (local_data_cx) free(local_data_cx); - if (local_data_cy) free(local_data_cy); + free(local_data_cx); + free(local_data_cy); imProcessCounterEnd(counter); return 0; } @@ -721,10 +720,10 @@ ret = iCalcMoment(cm20, 2, 0, image, data_cx, data_cy, region_count, counter); if (!ret) { - if (local_data_area) free(local_data_area); - if (local_data_cx) free(local_data_cx); - if (local_data_cy) free(local_data_cy); - if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); + free(local_data_area); + free(local_data_cx); + free(local_data_cy); + free(cm20); free(cm02); free(cm11); imProcessCounterEnd(counter); return 0; } @@ -731,10 +730,10 @@ ret = iCalcMoment(cm02, 0, 2, image, data_cx, data_cy, region_count, counter); if (!ret) { - if (local_data_area) free(local_data_area); - if (local_data_cx) free(local_data_cx); - if (local_data_cy) free(local_data_cy); - if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); + free(local_data_area); + free(local_data_cx); + free(local_data_cy); + free(cm20); free(cm02); free(cm11); imProcessCounterEnd(counter); return 0; } @@ -741,10 +740,10 @@ ret = iCalcMoment(cm11, 1, 1, image, data_cx, data_cy, region_count, counter); if (!ret) { - if (local_data_area) free(local_data_area); - if (local_data_cx) free(local_data_cx); - if (local_data_cy) free(local_data_cy); - if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); + free(local_data_area); + free(local_data_cx); + free(local_data_cy); + free(cm20); free(cm02); free(cm11); imProcessCounterEnd(counter); return 0; } @@ -827,17 +826,17 @@ if (!imCounterInc(counter)) { - if (local_major_slope) free(local_major_slope); - if (local_minor_slope) free(local_minor_slope); + free(local_major_slope); + free(local_minor_slope); free(A1); free(A2); free(C1); free(C2); - if (local_data_area) free(local_data_area); - if (local_data_cx) free(local_data_cx); - if (local_data_cy) free(local_data_cy); - if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); + free(local_data_area); + free(local_data_cx); + free(local_data_cy); + free(cm20); free(cm02); free(cm11); imProcessCounterEnd(counter); return 0; @@ -956,17 +955,17 @@ free(D1a); free(D2a); - if (local_major_slope) free(local_major_slope); - if (local_minor_slope) free(local_minor_slope); + free(local_major_slope); + free(local_minor_slope); free(A1); free(A2); free(C1); free(C2); - if (local_data_area) free(local_data_area); - if (local_data_cx) free(local_data_cx); - if (local_data_cy) free(local_data_cy); - if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); + free(local_data_area); + free(local_data_cx); + free(local_data_cy); + free(cm20); free(cm02); free(cm11); imProcessCounterEnd(counter); return ret; @@ -1106,7 +1105,7 @@ } } - if (holes_perim) free(holes_perim); + free(holes_perim); free(holes_area); imImageDestroy(holes_image);
_______________________________________________ Iup-users mailing list Iup-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/iup-users