modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/pr23946.c (about) 1 2 extern int foo (void); 3 4 int 5 avi_parse_comments (int fd, char *buf, int space_left) 6 { 7 int len = 0, readlen = 0, k; 8 char *data, *c, *d; 9 10 if (fd <= 0 || !buf || space_left <= 0) 11 return -1; 12 13 memset (buf, 0, space_left); 14 15 readlen = foo (); 16 if (!(data = malloc (readlen * sizeof (char) + 1))) 17 return -1; 18 19 c = data; 20 space_left--; 21 22 while (len < space_left) 23 { 24 if (!c || *c == '\0') 25 break; 26 else if (*c == 'I') 27 { 28 d = c + 4; 29 30 k = 0; 31 while (d[k] != '\r' && d[k] != '\n' && d[k] != '\0') 32 ++k; 33 if (k >= space_left) 34 return len; 35 36 37 memcpy (buf + len, c, 4); 38 len += 4; 39 40 41 long2str (buf + len, k + 1); 42 len += 4; 43 44 45 memcpy (buf + len, d, k); 46 47 *(buf + len + k + 1) = '\0'; 48 49 50 if ((k + 1) & 1) 51 { 52 k++; 53 *(buf + len + k + 1) = '\0'; 54 } 55 len += k + 1; 56 57 58 while (*c != '\n' && *c != '\0') 59 ++c; 60 if (*c != '\0') 61 ++c; 62 else 63 break; 64 65 } 66 } 67 free (data); 68 69 return len; 70 } 71 72