De: sur-behoffski <sur_behoff...@grouse.com.au>
Enviado: domingo, 26 de abril de 2020 00:39
Para: IUP discussion list.
Assunto: [Iup-users] Patch to simplify IM's (r757) src/process/im_analyze.cpp

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);
+1
I've tried without success, say what on that list. Which is a waste to test 
against NULL before calling free.

regards,
Ranier Vilela

_______________________________________________
Iup-users mailing list
Iup-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iup-users

Reply via email to