isocline icon indicating copy to clipboard operation
isocline copied to clipboard

Array-bounds warning when compiling with -03 and -Wall

Open rjollos opened this issue 11 months ago • 0 comments

$ gcc --version
gcc (Ubuntu 14.2.0-4ubuntu2~24.04) 14.2.0.
$  cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.1 LTS"

Compiling example with -O3 and -Wall:

$ gcc -o example -Iinclude test/example.c src/isocline.c -O3 -Wno-unused-function -Wall
In file included from src/isocline.c:31:
In function 'unicode_from_qutf8',
    inlined from 'term_append_utf8' at src/term.c:459:20,
    inlined from 'term_append_buf' at src/term.c:499:7,
    inlined from 'term_write_n' at src/term.c:285:3,
    inlined from 'term_write' at src/term.c:278:3,
    inlined from 'term_write' at src/term.c:275:17,
    inlined from 'edit_completion_menu' at src/editline_completion.c:241:7,
    inlined from 'edit_generate_completions' at src/editline_completion.c:275:5:
src/common.c:245:97: warning: array subscript 3 is outside array bounds of 'char[3]' [-Warray-bounds=]
  245 |            (((c0 == 0xF0 && s[1] >= 0x90 && s[1] <= 0xBF && utf8_is_cont(s[2]) && utf8_is_cont(s[3])) ||
      |                                                                                                ~^~~
src/common.c:247:96: warning: array subscript 3 is outside array bounds of 'char[3]' [-Warray-bounds=]
  247 |             (c0 == 0xF4 && s[1] >= 0x80 && s[1] <= 0x8F && utf8_is_cont(s[2]) && utf8_is_cont(s[3])))
      |                                                                                               ~^~~
src/common.c:246:100: warning: array subscript 3 is outside array bounds of 'char[3]' [-Warray-bounds=]
  246 |             (c0 >= 0xF1 && c0 <= 0xF3 && utf8_is_cont(s[1]) && utf8_is_cont(s[2]) && utf8_is_cont(s[3])) ||
      |                                                                                                   ~^~~
src/common.c:251:106: warning: array subscript 3 is outside array bounds of 'char[3]' [-Warray-bounds=]
  251 |     return (((c0 & 0x07) << 18) | ((unicode_t)(s[1] & 0x3F) << 12) | ((unicode_t)(s[2] & 0x3F) << 6) | (s[3] & 0x3F));

rjollos avatar Jan 27 '25 01:01 rjollos