Вы делаете strdup
в pantyshot_render
:
output_text = strdup(ob->data); /* ob is a "struct buf *" */
Но я не думаю, что ob->data
- строка C с нулевым символом в конце. Вы найдете это внутри upskirt/buffer.c
:
/* bufnullterm • NUL-termination of the string array (making a C-string) */
void
bufnullterm(struct buf *buf) {
if (!buf || !buf->unit) return;
if (buf->size < buf->asize && buf->data[buf->size] == 0) return;
if (bufgrow(buf, buf->size + 1))
buf->data[buf->size] = 0; }
Итак, вы, вероятно, бежите от конца буфера и вам повезло, нажав '\0'
перед нанесением любого урона. Я думаю, что вы должны вызвать bufnullterm(ob)
перед копированием ob->data
в виде строки C; или вы можете посмотреть ob->size
, использовать malloc
и strncpy
, чтобы скопировать его, и позаботиться о nul-terminator вручную (но убедитесь, что вы выделяете ob->size + 1
байт для скопированного строка).
И если вы хотите избавиться от новой строки (т. Е. Завершающего \n
), то вам, вероятно, придется где-то вручную убирать пробелы.