comparison src/logwindow.c @ 718:7119e30971ec

Fix a segfault occuring when logging an empty message and there is no log window.
author zas_
date Wed, 21 May 2008 08:53:51 +0000
parents fece9ff5c624
children a7289f9e8d29
comparison
equal deleted inserted replaced
717:aae956e84de4 718:7119e30971ec
209 GtkTextBuffer *buffer; 209 GtkTextBuffer *buffer;
210 GtkTextIter iter; 210 GtkTextIter iter;
211 gint line_limit = 1000; //FIXME: option 211 gint line_limit = 1000; //FIXME: option
212 static GList *memory = NULL; 212 static GList *memory = NULL;
213 213
214 if (logwindow == NULL && *str) 214 if (logwindow == NULL)
215 { 215 {
216 LogMsg *msg = g_new(LogMsg, 1); 216 if (*str) {
217 217 LogMsg *msg = g_new(LogMsg, 1);
218 msg->text = g_strdup(str); 218
219 msg->type = type; 219 msg->text = g_strdup(str);
220 220 msg->type = type;
221 memory = g_list_prepend(memory, msg); 221
222 222 memory = g_list_prepend(memory, msg);
223 while (g_list_length(memory) >= line_limit) 223
224 { 224 while (g_list_length(memory) >= line_limit)
225 GList *work = g_list_last(memory); 225 {
226 LogMsg *oldest_msg = work->data; 226 GList *work = g_list_last(memory);
227 LogMsg *oldest_msg = work->data;
227 228
228 g_free(oldest_msg->text); 229 g_free(oldest_msg->text);
229 memory = g_list_delete_link(memory, work); 230 memory = g_list_delete_link(memory, work);
231 }
230 } 232 }
231
232 return; 233 return;
233 } 234 }
234 235
235 text = GTK_TEXT_VIEW(logwindow->text); 236 text = GTK_TEXT_VIEW(logwindow->text);
236 buffer = gtk_text_view_get_buffer(text); 237 buffer = gtk_text_view_get_buffer(text);