gcc-8 -Wstringop-усечение - противоречивое поведение? - PullRequest
0 голосов
/ 27 февраля 2019

Я компилирую некоторый код C (предоставлю ссылку, если это действительно необходимо), используя GCC 8.2.0 в Linux и GCC 8.1.0 в Cygwin (последний - автоматическая сборка CI).

В Linux все проходит нормально.На Cygwin я получаю, среди прочего, следующие предупреждения:

C:\Users\travis\build\eyalroz\ssb-dbgen\src\bm_utils.c: In function 'e_str':
C:\Users\travis\build\eyalroz\ssb-dbgen\src\bm_utils.c:199:5: warning: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
     strncpy(dest + loc, strtmp, len);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\travis\build\eyalroz\ssb-dbgen\src\bm_utils.c:197:11: note: length computed here
     len = strlen(strtmp);
           ^~~~~~~~~~~~~~

и

C:\Users\travis\build\eyalroz\ssb-dbgen\src\build.c:697:5: warning: 'strncpy' specified bound 10 equals destination size [-Wstringop-truncation]
     strncpy(d->dayofweek, weekday_names[d->daynuminweek-1],D_DAYWEEK_LEN+1);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\travis\build\eyalroz\ssb-dbgen\src\build.c:698:5: warning: 'strncpy' specified bound 10 equals destination size [-Wstringop-truncation]
     strncpy(d->month,month_names[d->monthnuminyear-1],D_MONTH_LEN+1);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Я ничего не делаю, насколько я могу судить, что должно вызвать различныефлаги компиляции в обоих случаях.Почему я получаю предупреждения только в одной среде?Может ли это быть версия GCC?

...