ezxml
ezxml copied to clipboard
Compilation Warning([ezxml.c.]/ [line 364]): operation on 's' may be undefined [-Wsequence-point]
Summary
Compilation warning arise in ezxml.c for gcc compiler to parse an inline expression of condition which breaks a while loop.
The code snippet triggering the warning took place in line 364, inside function ezxml_internal_dtd(), which aims to parse default attributes such as <ATTLIST>.
Steps to reproduce
The environment is under CentOS Linux release 7.9.2009 (Core), with gcc (GCC) 7.3.0.
Compilation rules were defined ias below, with ezxml.h located in ${PROJECT_BINARY_DIR} and ezxml.c in the same directory with CMakeList.txt.
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_internal_dtd':
/home/cli/ezxml.c:364:26: warning: operation on 's' may be undefined [-Wsequence-point]
while (*(n = ++s + strspn(s, EZXML_WS)) && *n != '>') {
^
Possible fixes
My suggestion would be removing the inline condition expression, and adopting an multi-line expression instead.
Such as
while (*n != '>') {
++s;
if (*(n = s + strspn(s, EZXML_WS)) == 0) { break; }
...
Labels
/label ~bug ~reproduced ~needs-investigation