--- a/src/gtkmain.c Tue Apr 04 22:10:39 2006 -0400
+++ b/src/gtkmain.c Wed Apr 05 22:03:20 2006 -0400
@@ -248,7 +248,6 @@
gaim_gtk_connection_init();
@@ -506,11 +505,11 @@
GAIM_WEBSITE, GAIM_WEBSITE, GAIM_WEBSITE
/* we have to convert the message (UTF-8 to console
charset) early because after a segmentation fault
it's not a good practice to allocate memory */
- segfault_message = g_locale_from_utf8(segfault_message_tmp,
+ segfault_message = g_locale_from_utf8(segfault_message_tmp, if (segfault_message != NULL) {
g_free(segfault_message_tmp);
--- a/src/gtkthemes.c Tue Apr 04 22:10:39 2006 -0400
+++ b/src/gtkthemes.c Wed Apr 05 22:03:20 2006 -0400
@@ -72,6 +72,7 @@
struct smiley_list *list = NULL;
GSList *lst = smiley_themes;
+ gboolean new_theme = FALSE; @@ -86,40 +87,16 @@
theme = g_new0(struct smiley_theme, 1);
theme->path = g_strdup(file);
- smiley_themes = g_slist_append(smiley_themes, theme);
+ } else if (theme == current_smiley_theme) { + /* Don't reload the theme if it is already loaded */ dirname = g_path_get_dirname(file);
- if (current_smiley_theme) {
- GSList *already_freed = NULL;
- struct smiley_list *wer = current_smiley_theme->list, *wer2;
- GtkIMHtmlSmiley *uio = wer->smileys->data;
- g_object_unref(uio->icon);
- if (!g_slist_find(already_freed, uio->file)) {
- already_freed = g_slist_append(already_freed, uio->file);
- wer->smileys=g_slist_remove(wer->smileys, uio);
- current_smiley_theme->list = NULL;
- g_slist_free(already_freed);
- current_smiley_theme = theme;
if (!fgets(buf, sizeof(buf), f)) {
@@ -195,9 +172,75 @@
+ if (!theme->name || !theme->desc || !theme->author) { + GSList *already_freed = NULL; + struct smiley_list *wer = theme->list, *wer2; + gaim_debug_error("gtkthemes", "Invalid file format, not loading smiley theme from '%s'\n", file); + GtkIMHtmlSmiley *uio = wer->smileys->data; + g_object_unref(uio->icon); + if (!g_slist_find(already_freed, uio->file)) { + already_freed = g_slist_append(already_freed, uio->file); + wer->smileys = g_slist_remove(wer->smileys, uio); + g_slist_free(already_freed); + smiley_themes = g_slist_append(smiley_themes, theme); + if (current_smiley_theme) { + GSList *already_freed = NULL; + struct smiley_list *wer = current_smiley_theme->list, *wer2; + GtkIMHtmlSmiley *uio = wer->smileys->data; + g_object_unref(uio->icon); + if (!g_slist_find(already_freed, uio->file)) { + already_freed = g_slist_append(already_freed, uio->file); + wer->smileys = g_slist_remove(wer->smileys, uio); + current_smiley_theme->list = NULL; + g_slist_free(already_freed); + current_smiley_theme = theme; for (cnv = gaim_get_conversations(); cnv != NULL; cnv = cnv->next) {
GaimConversation *conv = cnv->data;
@@ -207,9 +250,6 @@
void gaim_gtkthemes_smiley_theme_probe()