1 /* The multiline output assumes sizeof(size_t) == 8.
2 { dg-require-effective-target lp64 } */
4 /* { dg-additional-options "-fdiagnostics-text-art-charset=unicode" } */
16 make_str_badly (const char *src
)
18 size_t len
= strlen(src
);
19 struct str
*str
= (struct str
*) malloc(sizeof(str
) + len
); /* { dg-message "\\(1\\) capacity: 'len \\+ 8' bytes" "" { target c } } */
20 /* { dg-message "\\(1\\) capacity: '\\(len \\+ 8\\)' bytes" "" { target c++ } .-1 } */
24 memcpy(str
->data
, src
, len
);
25 str
->data
[len
] = '\0'; /* { dg-warning "heap-based buffer overflow" } */
29 /* { dg-begin-multiline-output "" }
31 ┌──────────────────────────────────┐
32 │ write of '(char) 0' │
33 └──────────────────────────────────┘
37 ┌──────────────────────────────────┐┌──────────────────────────────────┐
38 │ buffer allocated on heap at (1) ││ after valid range │
39 └──────────────────────────────────┘└──────────────────────────────────┘
40 ├────────────────┬─────────────────┤├────────────────┬─────────────────┤
42 ╭────────────┴────────────╮ ╭─────────┴────────╮
43 │capacity: 'len + 8' bytes│ │overflow of 1 byte│
44 ╰─────────────────────────╯ ╰──────────────────╯
46 { dg-end-multiline-output "" } */