Skip to content

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

Description

@rexlim820220

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions