1 #undef __USE_STRING_INLINES 2 #define __USE_STRING_INLINES 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <string.h> 6 #include <libc-diag.h> 7 8 char d[3] = "\0\1\2"; 9 10 int main(void)11main (void) 12 { 13 DIAG_PUSH_NEEDS_COMMENT; 14 #if __GNUC_PREREQ (8, 0) 15 /* GCC 8 warns about strncat truncating output; this is deliberately 16 tested here. */ 17 DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-truncation"); 18 #endif 19 strncat (d, "\5\6", 1); 20 DIAG_POP_NEEDS_COMMENT; 21 if (d[0] != '\5') 22 { 23 puts ("d[0] != '\\5'"); 24 exit (1); 25 } 26 if (d[1] != '\0') 27 { 28 puts ("d[1] != '\\0'"); 29 exit (1); 30 } 31 if (d[2] != '\2') 32 { 33 puts ("d[2] != '\\2'"); 34 exit (1); 35 } 36 37 return 0; 38 } 39