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
[email protected]
https://lists.sourceforge.net/lists/listinfo/iup-users