C - SIGSEGV при попытке добавить к GTKTextBuffer - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь написать функцию для добавления заданной текстовой строки в конец моего GTKTextBuffer, однако у меня возникают проблемы с тем, что я предполагаю как проблемы с выделением памяти?

Итак, вот функция Я написал для добавления:

void append_to_log(GtkTextBuffer *buffer, char* strToSave) {

    GtkTextIter *iter;

    gtk_text_buffer_get_end_iter(buffer, iter);

    gtk_text_buffer_insert(buffer, iter, strToSave, strlen(strToSave));

}

Когда я пытаюсь запустить мою программу и добавить сообщение «Logging началось ... \ n», используя функцию ...

append_to_log(loggingBuffer, "Logging started... \n");

... Я получаю эту ошибку:

/home/csc/CLionProjects/SDS-CW/GUIs/Server/cmake-build-debug/SDS-CW
*** stack smashing detected ***: <unknown> terminated

Однако, когда я пытаюсь вручную добавить первую строку, она работает нормально:

gtk_text_buffer_set_text(loggingBuffer, "Logging started... \n", 20);

Поэтому я попытался установить начальный вручную, затем добавляя новую строку ...

gtk_text_buffer_set_text(loggingBuffer, "Logging started... \n", 20);
append_to_log(loggingBuffer, "Logging continued... \n");

... Я получаю ошибку сегментации.

Любые идеи, где я ошибаюсь, и как я могу быть удалось это исправить?

Большое спасибо.

1 Ответ

1 голос
/ 03 апреля 2020
GtkTextIter iter;
gtk_text_buffer_get_end_iter(buffer, &iter);

Вам нужно дать указатель на существующий экземпляр GtkTextIter, а не указатель на никуда, как в вашем коде.

...