2006-04-09 [colin] 2.1.0cvs21
authorColin Leroy <colin@colino.net>
Sun, 9 Apr 2006 10:19:47 +0000 (10:19 +0000)
committerColin Leroy <colin@colino.net>
Sun, 9 Apr 2006 10:19:47 +0000 (10:19 +0000)
* src/prefs_customheader.c
I prefer removing then freeing rather than the contrary
(even if it doesn't change anything ;-)
* src/prefs_account.c
Fix bug #933 (Crash re-entering the custom headers list
dialog in accounts prefs)
The problem happened when cancelling the Account
Preferences' dialogs - in which case we didn't do
anything to the PrefsAccount * struct. In case of applying,
the old ac_prefs was replaced with the tmp_ac_prefs we were
working with in this dialog. The problem is that
prefs_customheader.c, working on this tmp_ac_prefs, always
changes the ->customhdr_list pointer, even when cancelled.
So in case of cancelling the prefs_account dialog, we still
have to update ->customhdr_list in the real account.

ChangeLog
PATCHSETS
configure.ac
src/prefs_account.c
src/prefs_customheader.c

index 8d3cb5d..18ad913 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2006-04-09 [colin]     2.1.0cvs21
+
+       * src/prefs_customheader.c
+               I prefer removing then freeing rather than the contrary
+               (even if it doesn't change anything ;-)
+       * src/prefs_account.c
+               Fix bug #933 (Crash re-entering the custom headers list 
+               dialog in accounts prefs)
+               The problem happened when cancelling the Account 
+               Preferences' dialogs - in which case we didn't do 
+               anything to the PrefsAccount * struct. In case of applying,
+               the old ac_prefs was replaced with the tmp_ac_prefs we were
+               working with in this dialog. The problem is that 
+               prefs_customheader.c, working on this tmp_ac_prefs, always
+               changes the ->customhdr_list pointer, even when cancelled. 
+               So in case of cancelling the prefs_account dialog, we still
+               have to update ->customhdr_list in the real account.
+
 2006-04-08 [colin]     2.1.0cvs20
 
        * manual/fr/glossary.xml
index 1e599b6..a46b1e8 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.1.2.7 -r 1.1.2.8 manual/plugins.xml;  cvs diff -u -r 1.1.2.4 -r 1.1.2.5 manual/starting.xml;  ) > 2.1.0cvs18.patchset
 ( cvs diff -u -r 1.1.2.2 -r 1.1.2.3 manual/Makefile.am;  diff -u /dev/null manual/fr/Makefile.am;  diff -u /dev/null manual/fr/account.xml;  diff -u /dev/null manual/fr/ack.xml;  diff -u /dev/null manual/fr/addrbook.xml;  diff -u /dev/null manual/fr/advanced.xml;  diff -u /dev/null manual/fr/faq.xml;  diff -u /dev/null manual/fr/glossary.xml;  diff -u /dev/null manual/fr/gpl.xml;  diff -u /dev/null manual/fr/handling.xml;  diff -u /dev/null manual/fr/intro.xml;  diff -u /dev/null manual/fr/keyboard.xml;  diff -u /dev/null manual/fr/plugins.xml;  diff -u /dev/null manual/fr/starting.xml;  diff -u /dev/null manual/fr/sylpheed-claws-manual.xml;  diff -u /dev/null manual/fr/dist/.cvsignore;  diff -u /dev/null manual/fr/dist/Makefile.am;  diff -u /dev/null manual/fr/dist/html/.cvsignore;  diff -u /dev/null manual/fr/dist/html/Makefile.am;  diff -u /dev/null manual/fr/dist/pdf/.cvsignore;  diff -u /dev/null manual/fr/dist/pdf/Makefile.am;  diff -u /dev/null manual/fr/dist/ps/.cvsignore;  diff -u /dev/null manual/fr/dist/ps/Makefile.am;  diff -u /dev/null manual/fr/dist/txt/.cvsignore;  diff -u /dev/null manual/fr/dist/txt/Makefile.am;  ) > 2.1.0cvs19.patchset
 ( cvs diff -u -r 1.1.2.1 -r 1.1.2.2 manual/fr/glossary.xml;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 manual/fr/keyboard.xml;  ) > 2.1.0cvs20.patchset
+( cvs diff -u -r 1.105.2.50 -r 1.105.2.51 src/prefs_account.c;  cvs diff -u -r 1.16.2.18 -r 1.16.2.19 src/prefs_customheader.c;  ) > 2.1.0cvs21.patchset
index eaee977..2523e8e 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=1
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=20
+EXTRA_VERSION=21
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index 9ae3e29..1c81422 100644 (file)
@@ -949,7 +949,8 @@ void destroy_dialog(gpointer data)
        PrefsAccount *ac_prefs = (PrefsAccount *) data;
        if (!cancelled)
                *ac_prefs = tmp_ac_prefs;
-
+       else /* the customhdr_list may have changed, update it anyway */
+               ac_prefs->customhdr_list = (&tmp_ac_prefs)->customhdr_list;
        gtk_main_quit();
 }
 
index 2f47ed8..768602b 100644 (file)
@@ -326,8 +326,8 @@ void prefs_custom_header_read_config(PrefsAccount *ac)
        /* remove all previous headers list */
        while (ac->customhdr_list != NULL) {
                ch = (CustomHeader *)ac->customhdr_list->data;
-               custom_header_free(ch);
                ac->customhdr_list = g_slist_remove(ac->customhdr_list, ch);
+               custom_header_free(ch);
        }
 
        while (fgets(buf, sizeof(buf), fp) != NULL) {
@@ -421,8 +421,8 @@ void prefs_custom_header_write_config(PrefsAccount *ac)
 
        while (all_hdrs != NULL) {
                ch = (CustomHeader *)all_hdrs->data;
-               custom_header_free(ch);
                all_hdrs = g_slist_remove(all_hdrs, ch);
+               custom_header_free(ch);
        }
 
        if (prefs_file_close(pfile) < 0) {