summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_service.h
diff options
context:
space:
mode:
authorAndrew Clayton <a.clayton@nginx.com>2023-03-24 14:23:06 +0000
committerAndrew Clayton <a.clayton@nginx.com>2023-03-28 23:15:28 +0100
commit9b848c515ed9b72625c835c2eda1c0278892e97c (patch)
tree834af0a47713d23481dad2b16cc936dd29e4ad16 /src/nxt_service.h
parentecbefc519ec968f31ac659779ac2dedfe8545d3b (diff)
downloadunit-9b848c515ed9b72625c835c2eda1c0278892e97c.tar.gz
unit-9b848c515ed9b72625c835c2eda1c0278892e97c.tar.bz2
Don't conflate the error variable in nxt_kqueue_poll().
In nxt_kqueue_poll() error is declared as a nxt_bool_t aka unsigned int (on x86-64 anyway). It is used both as a boolean and as the return storage for a bitwise AND operation. This causes the following issue after we have changed nxt_bool_t to be a uint8_t (which will happen in a subsequent commit) gcc12 -c -pipe -fPIC -fvisibility=hidden -O -W -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wmissing-prototypes -Werror -g -O2 -I src -I build -I/usr/local/include -o build/src/nxt_kqueue_engine.o -MMD -MF build/src/nxt_kqueue_engine.dep -MT build/src/nxt_kqueue_engine.o src/nxt_kqueue_engine.c src/nxt_kqueue_engine.c: In function 'nxt_kqueue_poll': src/nxt_kqueue_engine.c:728:17: error: overflow in conversion from 'int' to 'nxt_bool_t' {aka 'unsigned char'} changes value from '(int)kev->flags & 16384' to '0' [-Werror=overflow] 728 | error = (kev->flags & EV_ERROR); | ^ cc1: all warnings being treated as errors EV_ERROR has the value 16384, after the AND operation error holds 16384, however this overflows and wraps around (64 times) exactly to 0. Rather than conflating the use of error, keep error as a boolean (it is used further down the function) but do the AND operation inside the if (). Reviewed-by: Alejandro Colomar <alx@nginx.com> Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
Diffstat (limited to 'src/nxt_service.h')
0 files changed, 0 insertions, 0 deletions