ezxml icon indicating copy to clipboard operation
ezxml copied to clipboard

Compilation Warning([ezxml.c.]/ [line 813]): comparison between signed and unsigned integer expression [-Wsign-compare]

Open rexlim820220 opened this issue 2 years ago • 0 comments

Summary

Compilation warning arise in ezxml.c for gcc-7 compiler to compare between signed integer(-1) and unsigned variable (root->len) within function void ezxml_free(ezxml_t xml).

It raises an -Wsign-compare warning in gcc-7.

Steps to reproduce

The environment is under CentOS Linux release 7.9.2009 (Core), with gcc (GCC) 7.3.0.

Compilation rules were defined as below, with ezxml.h located in ${PROJECT_BINARY_DIR} and ezxml.c in the same directory with CMakeList.txt. ( same with #6 )

project(APP C)
include_directories(${PROJECT_BINARY_DIR})

# source files
set(CLI_SRC ezxml.c)

add_executable(APP ${CLI_SRC})
...

What is the current bug(warning) behavior?

gcc shows warning as below:

[ 85%] Building C object cli/CMakeFiles/ezxml.c.o
/home/cli/ezxml.c: In function 'ezxml_free':
/home/cli/ezxml.c:813:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (root->len == -1) free(root->m);
                       ^

Possible fixes

My suggestion would be add a type conversion such as

if (root->len == (unsigned int)-1) free(root->m); // malloced xml data

Instead of

if (root->len == -1) free(root->m); // malloced xml data

Labels

/label ~bug ~reproduced ~needs-investigation

rexlim820220 avatar Apr 28 '23 07:04 rexlim820220