changeset 12600:e856f985a0b9

[gaim-migrate @ 14934] Enable the extra warnings regardless of --enable-debug. Enable FORTIFY_SOURCE regardless of --enable-debug, adding a --disable-fortify flag to configure. Enable (well, stop disabling) the missing initializer warnings. This leads to warnings with: GValue v = {0,}; that must be worked around. Basically, instead of: GValue v = {0,}; ... g_value_init(&v, G_TYPE_FOO); /* or other use of the GValue */ We'd need to do: GValue v; ... v.g_type = 0; g_value_init(&v, G_TYPE_FOO); /* or other use of the GValue */ Fix several cases of missing initializers. I don't think any of these are bugs, but having this warning seems like a good idea. It might prevent us from making a mistake in the future. While I was fixing missing initializers, I optimized substitute_simple_word in plugins/spellchk.c, in the same way as I did substitute_word before. Yes, I'm bad for committing these together. Added a --enable-fatal-asserts flag to configure. As the name implies, this makes g_return_... guards fatal. This is a useful flag to run on a debug copy of Gaim. It will make it very clear if your changes have triggered one of these guards. It's also useful in detecting g_return_... abuse, which helps prevent crashes if Gaim is compiled with G_DISABLE_ASSERT defined. committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Wed, 21 Dec 2005 18:36:19 +0000
parents e94c33909aa6
children e63fb8e9f4ac
files config.h.mingw configure.ac plugins/docklet/docklet.c plugins/docklet/eggtrayicon.c plugins/extplacement.c plugins/gaimrc.c plugins/gestures/gestures.c plugins/notify.c plugins/spellchk.c plugins/statenotify.c plugins/ticker/gtkticker.c plugins/timestamp.c src/gtkaccount.c src/gtkblist.c src/gtkcellrendererprogress.c src/gtkconv.c src/gtkft.c src/gtkimhtml.c src/gtkimhtmltoolbar.c src/gtklog.c src/gtkmain.c src/gtknotify.c src/gtkplugin.c src/gtkprefs.c src/gtkrequest.c src/gtkroomlist.c src/protocols/gg/gg.c src/protocols/irc/irc.c src/protocols/jabber/jabber.c src/protocols/msn/msn.c src/protocols/novell/novell.c src/protocols/oscar/im.c src/protocols/oscar/locate.c src/protocols/oscar/oscar.c src/protocols/silc/silc.c src/protocols/simple/simple.c src/protocols/yahoo/yahoo.c src/protocols/yahoo/yahoo_profile.c src/protocols/zephyr/zephyr.c
diffstat 39 files changed, 294 insertions(+), 189 deletions(-) [+]
line wrap: on
line diff
--- a/config.h.mingw	Wed Dec 21 13:37:18 2005 +0000
+++ b/config.h.mingw	Wed Dec 21 18:36:19 2005 +0000
@@ -25,6 +25,9 @@
    language is requested. */
 #define ENABLE_NLS 1
 
+/* Define to make assertions fatal (useful for debugging). */
+/* #undef GAIM_FATAL_ASSERTS */
+
 /* Define if plugins are enabled. */
 #define GAIM_PLUGINS 1
 
--- a/configure.ac	Wed Dec 21 13:37:18 2005 +0000
+++ b/configure.ac	Wed Dec 21 18:36:19 2005 +0000
@@ -329,7 +329,7 @@
 AM_CONDITIONAL(DYNAMIC_ZEPHYR, test "x$dynamic_zephyr" = "xyes")
 
 AC_ARG_ENABLE(audio,   [  --disable-audio         compile without libao/libaudiofile for sound playing],,enable_audio=yes)
-AC_ARG_ENABLE(mono,    [  --enable-mono          compile with Mono runtime support],,enable_mono=no)
+AC_ARG_ENABLE(mono,    [  --enable-mono           compile with Mono runtime support],,enable_mono=no)
 AC_ARG_ENABLE(plugins, [  --disable-plugins       compile without plugin support],,enable_plugins=yes)
 AC_ARG_ENABLE(perl,    [  --disable-perl          compile without perl scripting],,enable_perl=yes)
 AC_ARG_ENABLE(tcl,     [  --disable-tcl           compile without Tcl scripting],,enable_tcl=yes)
@@ -338,12 +338,14 @@
 AC_ARG_WITH(tkconfig,  [  --with-tkconfig=DIR     directory containing tkConfig.sh])
 AC_ARG_ENABLE(gtkspell, [  --disable-gtkspell      compile without GtkSpell automatic spell checking],,enable_gtkspell=yes)
 AC_ARG_ENABLE(debug,   [  --enable-debug          compile with debugging support],,enable_debug=no)
+AC_ARG_ENABLE(fatal-asserts,   [  --enable-fatal-asserts  make assertions fatal (useful for debugging)],,enable_fatal_asserts=no)
 dnl We know Gaim won't compile with deprecated APIs disabled.
 dnl We have no desire to support two different versions of the
 dnl same code when it's not necessary, so we're sticking with
 dnl the deprecated APIs in many cases.
 dnl This option is being left in case things change.
 dnl AC_ARG_ENABLE(deprecated,    [  --disable-deprecated    compile without deprecated API usage],,enable_deprecated=yes)
+AC_ARG_ENABLE(fortify, [  --disable-fortify       compile without FORTIFY_SOURCE support],,enable_fortify=yes)
 AC_ARG_ENABLE(screensaver,   [  --disable-screensaver   compile without X screensaver extension],,enable_xss=yes)
 AC_ARG_ENABLE(sm,      [  --disable-sm            compile without X session management support],,enable_sm=yes)
 AC_ARG_WITH(krb4,      [  --with-krb4=PREFIX      compile Zephyr plugin with Kerberos 4 support],kerberos="$withval",kerberos="no")
@@ -353,72 +355,69 @@
 AC_CHECK_HEADER(sys/utsname.h)
 AC_CHECK_FUNC(uname)
 
-if test "$enable_debug" = yes ; then
+if test "x$enable_debug" = "xyes" ; then
 	AC_DEFINE(DEBUG, 1, [Define if debugging is enabled.])
+fi
 
-	if test "x$GCC" = "xyes"; then
+if test "x$enable_fatal_asserts" = "xyes" ; then
+	AC_DEFINE(GAIM_FATAL_ASSERTS, 1, [Define to make assertions fatal (useful for debugging).])
+fi
 
-		dnl We enable -Wall later, regardless of --enable-debug.
-		dnl If it's set after the warning CFLAGS in the compiler invocation, it counteracts the -Wno... flags.
-		dnl This leads to warnings we don't want.
-		CFLAGS=`echo $CFLAGS |$sedpath 's/-Wall//'`
+if test "x$enable_deprecated" = "xno"; then
+	DEBUG_CFLAGS="$DEBUG_CFLAGS -DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
+fi
+
+if test "x$GCC" = "xyes"; then
+	dnl We enable -Wall later.
+	dnl If it's set after the warning CFLAGS in the compiler invocation, it counteracts the -Wno... flags.
+	dnl This leads to warnings we don't want.
+	CFLAGS=`echo $CFLAGS |$sedpath 's/-Wall//'`
 
-		dnl ENABLE WARNINGS SUPPORTED BY THE VERSION OF GCC IN USE
-		dnl
-		dnl Future Possibilities
-		dnl
-		dnl Consider adding -Wbad-function-cast.
-		dnl	This leads to spurious warnings using GPOINTER_TO_INT(), et al. directly on a function call.
-		dnl		We'd need an intermediate variable.
-		dnl
-		dnl Consider adding -Wfloat-equal.
-		dnl	This leads to warnings with Perl.
-		dnl 		Perhaps we could write ugly configure magic and pass -Wno-float-equal down to that subdirectory.
-		dnl		On the other hand, it's probably actually broken, so maybe the Perl folks should fix that?
-		dnl
-		dnl Consider removing -Wno-sign-compare (from the -Wextra set) and fixing all those cases.
-		dnl	This is likely non-trivial.
-		dnl
-		dnl Remove -Wno-missing-field-initializers (from the -Wextra set)
-		dnl	This leads to warnings with: GValue v = {0,}; that must be worked around.
-		dnl		Basically, instead of:
-		dnl			GValue v = {0,};
-		dnl			...
-		dnl			g_value_init(&v, G_TYPE_FOO);
-		dnl		We'd need to do:
-		dnl			GValue v;
-		dnl			...
-		dnl			v.g_type = 0;
-		dnl			g_value_init(&v, G_TYPE_FOO);
-		dnl
-		for newflag in \
-				"-Waggregate-return" \
-				"-Wcast-align" \
-				"-Wdeclaration-after-statement" \
-				"-Werror-implicit-function-declaration" \
-				"-Wextra -Wno-sign-compare -Wno-missing-field-initializers -Wno-unused-parameter" \
-				"-Winit-self" \
-				"-Wmissing-declarations" \
-				"-Wmissing-prototypes" \
-				"-Wnested-externs" \
-				"-Wpointer-arith" \
-				"-Wundef" \
-		; do
-			orig_CFLAGS="$CFLAGS"
-			CFLAGS="$CFLAGS $newflag"
-			AC_MSG_CHECKING(for $newflag option to gcc)
-			AC_TRY_COMPILE([], [
-				int main() {return 0;}
-			], [
-				AC_MSG_RESULT(yes)
-				CFLAGS="$orig_CFLAGS"
-				DEBUG_CFLAGS="$DEBUG_CFLAGS $newflag"
-			], [
-				AC_MSG_RESULT(no)
-				CFLAGS="$orig_CFLAGS"
-			])
-		done
+	dnl ENABLE WARNINGS SUPPORTED BY THE VERSION OF GCC IN USE
+	dnl
+	dnl Future Possibilities
+	dnl
+	dnl Consider adding -Wbad-function-cast.
+	dnl	This leads to spurious warnings using GPOINTER_TO_INT(), et al. directly on a function call.
+	dnl		We'd need an intermediate variable.
+	dnl
+	dnl Consider adding -Wfloat-equal.
+	dnl	This leads to warnings with Perl.
+	dnl 		Perhaps we could write ugly configure magic and pass -Wno-float-equal down to that subdirectory.
+	dnl		On the other hand, it's probably actually broken, so maybe the Perl folks should fix that?
+	dnl
+	dnl Consider removing -Wno-sign-compare (from the -Wextra set) and fixing all those cases.
+	dnl	This is likely non-trivial.
+	dnl
+	for newflag in \
+			"-Waggregate-return" \
+			"-Wcast-align" \
+			"-Wdeclaration-after-statement" \
+			"-Werror-implicit-function-declaration" \
+			"-Wextra -Wno-sign-compare -Wno-unused-parameter" \
+			"-Winit-self" \
+			"-Wmissing-declarations" \
+			"-Wmissing-prototypes" \
+			"-Wnested-externs" \
+			"-Wpointer-arith" \
+			"-Wundef" \
+	; do
+		orig_CFLAGS="$CFLAGS"
+		CFLAGS="$CFLAGS $newflag"
+		AC_MSG_CHECKING(for $newflag option to gcc)
+		AC_TRY_COMPILE([], [
+			int main() {return 0;}
+		], [
+			AC_MSG_RESULT(yes)
+			CFLAGS="$orig_CFLAGS"
+			DEBUG_CFLAGS="$DEBUG_CFLAGS $newflag"
+		], [
+			AC_MSG_RESULT(no)
+			CFLAGS="$orig_CFLAGS"
+		])
+	done
 
+	if test "x$enable_fortify" = "xyes"; then
 		AC_MSG_CHECKING(for FORTIFY_SOURCE support)
 		AC_TRY_COMPILE([#include <features.h>], [
 			int main() {
@@ -438,15 +437,8 @@
 		], [
 			AC_MSG_RESULT(no)
 		])
-
 	fi
-fi
 
-if test "x$enable_deprecated" = "xno"; then
-	DEBUG_CFLAGS="$DEBUG_CFLAGS -DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
-fi
-
-if test "x$GCC" = "xyes"; then
 	DEBUG_CFLAGS="-Wall $DEBUG_CFLAGS"
 	CFLAGS="-g $CFLAGS"
 fi
@@ -1410,7 +1402,7 @@
 dnl AC_CHECK_SIZEOF(short)
 AC_CHECK_FUNCS(snprintf connect)
 AC_SUBST(SASL_LIBS)
-AC_ARG_ENABLE(cyrus-sasl, AC_HELP_STRING([--enable-cyrus-sasl], [enable Cyrus SASL support for jabberd (no)]), enable_cyrus_sasl=$enableval, enable_cyrus_sasl=no)
+AC_ARG_ENABLE(cyrus-sasl, AC_HELP_STRING([--enable-cyrus-sasl], [enable Cyrus SASL support for jabberd]), enable_cyrus_sasl=$enableval, enable_cyrus_sasl=no)
 if test "x-$enable_cyrus_sasl" = "x-yes" ; then
   AC_CHECK_LIB(sasl2, sasl_client_init, [AC_DEFINE(HAVE_CYRUS_SASL, [1], [Define to 1 if Cyrus SASL is present]) SASL_LIBS=-"lsasl2"], [AC_ERROR(Cyrus SASL library not found)])
 fi
--- a/plugins/docklet/docklet.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/plugins/docklet/docklet.c	Wed Dec 21 18:36:19 2005 +0000
@@ -589,7 +589,8 @@
 
 static GaimGtkPluginUiInfo ui_info =
 {
-	plugin_config_frame
+	plugin_config_frame,
+	0 /* page_num (Reserved) */
 };
 
 static GaimPluginInfo info =
--- a/plugins/docklet/eggtrayicon.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/plugins/docklet/eggtrayicon.c	Wed Dec 21 18:36:19 2005 +0000
@@ -79,7 +79,8 @@
 	NULL, /* class_data */
 	sizeof (EggTrayIcon),
 	0,    /* n_preallocs */
-	(GInstanceInitFunc) egg_tray_icon_init
+	(GInstanceInitFunc) egg_tray_icon_init,
+	NULL /* value_table */
       };
 
       our_type = g_type_register_static (GTK_TYPE_PLUG, "EggTrayIcon", &our_info, 0);
--- a/plugins/extplacement.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/plugins/extplacement.c	Wed Dec 21 18:36:19 2005 +0000
@@ -116,7 +116,9 @@
 }
 
 static GaimPluginUiInfo prefs_info = {
-	get_plugin_pref_frame
+	get_plugin_pref_frame,
+	0,   /* page_num (Reserved) */
+	NULL /* frame (Reserved) */
 };
 
 static GaimPluginInfo info =
--- a/plugins/gaimrc.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/plugins/gaimrc.c	Wed Dec 21 18:36:19 2005 +0000
@@ -545,7 +545,8 @@
 
 static GaimGtkPluginUiInfo gaimrc_ui_info =
 {
-	gaimrc_get_config_frame
+	gaimrc_get_config_frame,
+	0 /* page_num (Reserved) */
 };
 
 static GaimPluginInfo gaimrc_info =
--- a/plugins/gestures/gestures.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/plugins/gestures/gestures.c	Wed Dec 21 18:36:19 2005 +0000
@@ -278,7 +278,8 @@
 
 static GaimGtkPluginUiInfo ui_info =
 {
-	get_config_frame
+	get_config_frame,
+	0 /* page_num (Reserved) */
 };
 
 static GaimPluginInfo info =
--- a/plugins/notify.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/plugins/notify.c	Wed Dec 21 18:36:19 2005 +0000
@@ -824,7 +824,8 @@
 
 static GaimGtkPluginUiInfo ui_info =
 {
-	get_config_frame
+	get_config_frame,
+	0 /* page_num (Reserved) */
 };
 
 static GaimPluginInfo info =
--- a/plugins/spellchk.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/plugins/spellchk.c	Wed Dec 21 18:36:19 2005 +0000
@@ -142,27 +142,34 @@
 	text = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
 
 	if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &treeiter) && text) {
-		do{
-			GValue val0 = {0, };
-			GValue val1 = {0, };
-			GValue val2 = {0, };
+		do {
+			GValue val1;
 			const gchar *bad;
-			const gchar *good;
 			gchar *cursor;
-			gboolean word_only;
 			glong char_pos;
 
-			gtk_tree_model_get_value(GTK_TREE_MODEL(model), &treeiter, BAD_COLUMN, &val0);
-			gtk_tree_model_get_value(GTK_TREE_MODEL(model), &treeiter, GOOD_COLUMN, &val1);
-			gtk_tree_model_get_value(GTK_TREE_MODEL(model), &treeiter, WORD_ONLY_COLUMN, &val2);
+			val1.g_type = 0;
+			gtk_tree_model_get_value(GTK_TREE_MODEL(model), &treeiter, WORD_ONLY_COLUMN, &val1);
+			if (g_value_get_boolean(&val1))
+			{
+				g_value_unset(&val1);
+				continue;
+			}
+			g_value_unset(&val1);
 
-			bad = g_value_get_string(&val0);
-			good = g_value_get_string(&val1);
-			word_only = g_value_get_boolean(&val2);
+			gtk_tree_model_get_value(GTK_TREE_MODEL(model), &treeiter, BAD_COLUMN, &val1);
+			bad = g_value_get_string(&val1);
 
 			/* using g_utf8_* to get /character/ offsets instead of byte offsets for buffer */
-			if (!word_only && (cursor = g_strrstr(text, bad)))
+			if ((cursor = g_strrstr(text, bad)))
 			{
+				GValue val2;
+				const gchar *good;
+
+				val2.g_type = 0;
+				gtk_tree_model_get_value(GTK_TREE_MODEL(model), &treeiter, GOOD_COLUMN, &val2);
+				good = g_value_get_string(&val2);
+
 				char_pos = g_utf8_pointer_to_offset(text, cursor);
 				gtk_text_buffer_get_iter_at_offset(buffer, &start, char_pos);
 				gtk_text_buffer_get_iter_at_offset(buffer, &end, char_pos + g_utf8_strlen(bad, -1));
@@ -171,17 +178,14 @@
 				gtk_text_buffer_get_iter_at_offset(buffer, &start, char_pos);
 				gtk_text_buffer_insert(buffer, &start, good, -1);
 
-				g_value_unset(&val0);
-				g_value_unset(&val1);
 				g_value_unset(&val2);
 				g_free(text);
 
+				g_value_unset(&val1);
 				return TRUE;
 			}
 
-			g_value_unset(&val0);
 			g_value_unset(&val1);
-			g_value_unset(&val2);
 		} while (gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &treeiter));
 	}
 
@@ -205,11 +209,11 @@
 
 	if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) {
 		do {
-			GValue val1 = {0, };
+			GValue val1;
 			const char *bad;
 			gchar *tmpbad = NULL;
-			gboolean word_only;
 
+			val1.g_type = 0;
 			gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, WORD_ONLY_COLUMN, &val1);
 			if (!g_value_get_boolean(&val1)) {
 				g_value_unset(&val1);
@@ -224,11 +228,12 @@
 			    (!is_word_lowercase(bad) &&
 			     !strcmp((tmpbad = g_utf8_casefold(bad, -1)), foldedword)))
 			{
-				GValue val2 = {0, };
+				GValue val2;
 				const char *good;
 
 				g_free(tmpbad);
 
+				val2.g_type = 0;
 				gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, GOOD_COLUMN, &val2);
 				good = g_value_get_string(&val2);
 
@@ -1745,7 +1750,7 @@
 					  gchar *path, gchar *arg2, gpointer data)
 {
 	GtkTreeIter iter;
-	GValue val = {0, };
+	GValue val;
 
 	if (arg2[0] == '\0') {
 		gdk_beep();
@@ -1753,6 +1758,7 @@
 	}
 
 	g_return_if_fail(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model), &iter, path));
+	val.g_type = 0;
 	gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, GPOINTER_TO_INT(data), &val);
 
 	if (strcmp(arg2, g_value_get_string(&val))) {
@@ -1788,9 +1794,10 @@
 		char *tmpword = g_utf8_casefold(gtk_entry_get_text(GTK_ENTRY(bad_entry)), -1);
 
 		do {
-			GValue val0 = {0, };
+			GValue val0;
 			char *bad;
 
+			val0.g_type = 0;
 			gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, BAD_COLUMN, &val0);
 			bad = g_utf8_casefold(g_value_get_string(&val0), -1);
 
@@ -1877,9 +1884,13 @@
 
 	if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) {
 		do {
-			GValue val0 = {0, };
-			GValue val1 = {0, };
-			GValue val2 = {0, };
+			GValue val0;
+			GValue val1;
+			GValue val2;
+
+			val0.g_type = 0;
+			val1.g_type = 0;
+			val2.g_type = 0;
 
 			gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, BAD_COLUMN, &val0);
 			gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, GOOD_COLUMN, &val1);
@@ -2115,7 +2126,8 @@
 
 static GaimGtkPluginUiInfo ui_info =
 {
-	get_config_frame
+	get_config_frame,
+	0 /* page_num (Reserved) */
 };
 
 static GaimPluginInfo info =
--- a/plugins/statenotify.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/plugins/statenotify.c	Wed Dec 21 18:36:19 2005 +0000
@@ -121,7 +121,9 @@
 
 static GaimPluginUiInfo prefs_info =
 {
-	get_plugin_pref_frame
+	get_plugin_pref_frame,
+	0,   /* page_num (Reserved) */
+	NULL /* frame (Reserved) */
 };
 
 static GaimPluginInfo info =
--- a/plugins/ticker/gtkticker.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/plugins/ticker/gtkticker.c	Wed Dec 21 18:36:19 2005 +0000
@@ -65,7 +65,8 @@
 			NULL,
 			sizeof(GtkTicker),
 			0,
-			(GInstanceInitFunc) gtk_ticker_init
+			(GInstanceInitFunc) gtk_ticker_init,
+			NULL
 		};
 
 		ticker_type = g_type_register_static (GTK_TYPE_CONTAINER, "GtkTicker",
--- a/plugins/timestamp.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/plugins/timestamp.c	Wed Dec 21 18:36:19 2005 +0000
@@ -257,7 +257,8 @@
 
 static GaimGtkPluginUiInfo ui_info =
 {
-	get_config_frame
+	get_config_frame,
+	0 /* page_num (Reserved) */
 };
 
 static GaimPluginInfo info =
--- a/src/gtkaccount.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtkaccount.c	Wed Dec 21 18:36:19 2005 +0000
@@ -1947,7 +1947,7 @@
 		GtkTreePath *source_row;
 		GtkTreeIter iter;
 		GaimAccount *account = NULL;
-		GValue val = {0};
+		GValue val;
 
 		ref = g_object_get_data(G_OBJECT(ctx), "gtk-tree-view-source-row");
 		source_row = gtk_tree_row_reference_get_path(ref);
@@ -1957,6 +1957,7 @@
 
 		gtk_tree_model_get_iter(GTK_TREE_MODEL(dialog->model), &iter,
 								source_row);
+		val.g_type = 0;
 		gtk_tree_model_get_value(GTK_TREE_MODEL(dialog->model), &iter,
 								 COLUMN_DATA, &val);
 
@@ -2025,9 +2026,10 @@
 
 			GtkTreeIter iter;
 			GaimAccount *account;
-			GValue val = {0};
+			GValue val;
 
 			gtk_tree_model_get_iter(GTK_TREE_MODEL(dialog->model), &iter, path);
+			val.g_type = 0;
 			gtk_tree_model_get_value(GTK_TREE_MODEL(dialog->model), &iter,
 									 COLUMN_DATA, &val);
 
--- a/src/gtkblist.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtkblist.c	Wed Dec 21 18:36:19 2005 +0000
@@ -294,12 +294,13 @@
 {
 	GtkTreeIter iter;
 	GtkTreePath *path;
-	GValue val = {0,};
+	GValue val;
 	GaimBlistNode *node;
 
 	path = gtk_tree_path_new_from_string (arg1);
 	gtk_tree_model_get_iter (GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
 	gtk_tree_path_free (path);
+	val.g_type = 0;
 	gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
 	node = g_value_get_pointer(&val);
 	gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), TRUE);
@@ -737,8 +738,9 @@
 
 static void gtk_blist_row_expanded_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) {
 	GaimBlistNode *node;
-	GValue val = {0,};
-
+	GValue val;
+
+	val.g_type = 0;
 	gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &val);
 
 	node = g_value_get_pointer(&val);
@@ -750,8 +752,9 @@
 
 static void gtk_blist_row_collapsed_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) {
 	GaimBlistNode *node;
-	GValue val = {0,};
-
+	GValue val;
+
+	val.g_type = 0;
 	gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &val);
 
 	node = g_value_get_pointer(&val);
@@ -766,10 +769,11 @@
 static void gtk_blist_row_activated_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data) {
 	GaimBlistNode *node;
 	GtkTreeIter iter;
-	GValue val = { 0, };
+	GValue val;
 
 	gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
 
+	val.g_type = 0;
 	gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
 	node = g_value_get_pointer(&val);
 
@@ -1076,7 +1080,7 @@
 static gboolean
 gtk_blist_key_press_cb(GtkWidget *tv, GdkEventKey *event, gpointer data) {
 	GaimBlistNode *node;
-	GValue val = { 0, };
+	GValue val;
 	GtkTreeIter iter;
 	GtkTreeSelection *sel;
 
@@ -1084,6 +1088,7 @@
 	if(!gtk_tree_selection_get_selected(sel, NULL, &iter))
 		return FALSE;
 
+	val.g_type = 0;
 	gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
 			NODE_COLUMN, &val);
 	node = g_value_get_pointer(&val);
@@ -1309,7 +1314,7 @@
 {
 	GtkTreePath *path;
 	GaimBlistNode *node;
-	GValue val = { 0, };
+	GValue val;
 	GtkTreeIter iter;
 	GtkTreeSelection *sel;
 	GaimPlugin *prpl = NULL;
@@ -1321,6 +1326,7 @@
 	if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), event->x, event->y, &path, NULL, NULL, NULL))
 		return FALSE;
 	gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
+	val.g_type = 0;
 	gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
 	node = g_value_get_pointer(&val);
 	gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
@@ -1381,7 +1387,7 @@
 gaim_gtk_blist_popup_menu_cb(GtkWidget *tv, void *user_data)
 {
 	GaimBlistNode *node;
-	GValue val = { 0, };
+	GValue val;
 	GtkTreeIter iter;
 	GtkTreeSelection *sel;
 	gboolean handled = FALSE;
@@ -1390,6 +1396,7 @@
 	if (!gtk_tree_selection_get_selected(sel, NULL, &iter))
 		return FALSE;
 
+	val.g_type = 0;
 	gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel),
 							 &iter, NODE_COLUMN, &val);
 	node = g_value_get_pointer(&val);
@@ -1639,10 +1646,11 @@
 		GtkTreePath *sourcerow = gtk_tree_row_reference_get_path(ref);
 		GtkTreeIter iter;
 		GaimBlistNode *node = NULL;
-		GValue val = {0};
+		GValue val;
 		if(!sourcerow)
 			return;
 		gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, sourcerow);
+		val.g_type = 0;
 		gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
 		node = g_value_get_pointer(&val);
 		gtk_selection_data_set (data,
@@ -1661,7 +1669,7 @@
 		GaimBlistNode *node = NULL;
 		GaimBuddy *buddy;
 		GaimConnection *gc;
-		GValue val = {0};
+		GValue val;
 		GString *str;
 		const char *protocol;
 		char *mime_str;
@@ -1674,6 +1682,7 @@
 
 		gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
 								sourcerow);
+		val.g_type = 0;
 		gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
 								 NODE_COLUMN, &val);
 
@@ -1748,11 +1757,12 @@
 			/* if we're here, I think it means the drop is ok */
 			GtkTreeIter iter;
 			GaimBlistNode *node;
-			GValue val = {0};
+			GValue val;
 			struct _gaim_gtk_blist_node *gtknode;
 
 			gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
 					&iter, path);
+			val.g_type = 0;
 			gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
 					&iter, NODE_COLUMN, &val);
 			node = g_value_get_pointer(&val);
@@ -1903,10 +1913,11 @@
 		{
 			GtkTreeIter iter;
 			GaimBlistNode *node;
-			GValue val = {0};
+			GValue val;
 
 			gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
 									&iter, path);
+			val.g_type = 0;
 			gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
 									  &iter, NODE_COLUMN, &val);
 			node = g_value_get_pointer(&val);
@@ -1964,10 +1975,11 @@
 		{
 			GtkTreeIter iter;
 			GaimBlistNode *node;
-			GValue val = {0};
+			GValue val;
 
 			gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
 									&iter, path);
+			val.g_type = 0;
 			gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
 									  &iter, NODE_COLUMN, &val);
 			node = g_value_get_pointer(&val);
@@ -1999,10 +2011,11 @@
 			{
 				GtkTreeIter iter;
 				GaimBlistNode *node;
-				GValue val = {0};
+				GValue val;
 
 				gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
 							&iter, path);
+				val.g_type = 0;
 				gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
 							  &iter, NODE_COLUMN, &val);
 				node = g_value_get_pointer(&val);
@@ -2212,12 +2225,13 @@
 	GtkTreePath *path;
 	GtkTreeIter iter;
 	GaimBlistNode *node;
-	GValue val = {0};
+	GValue val;
 	struct _gaim_gtk_blist_node *gtknode;
 
 	if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y, &path, NULL, NULL, NULL))
 		return FALSE;
 	gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
+	val.g_type = 0;
 	gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
 	node = g_value_get_pointer(&val);
 
@@ -2269,7 +2283,7 @@
 	GtkTreePath *path;
 	GtkTreeIter iter;
 	GaimBlistNode *node;
-	GValue val = {0};
+	GValue val;
 	int scr_w, scr_h, w, h, x, y;
 #if GTK_CHECK_VERSION(2,2,0)
 	int mon_num;
@@ -2288,6 +2302,7 @@
 	if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y, &path, NULL, NULL, NULL))
 		return FALSE;
 	gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
+	val.g_type = 0;
 	gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
 	node = g_value_get_pointer(&val);
 
@@ -2497,42 +2512,42 @@
 static GtkItemFactoryEntry blist_menu[] =
 {
 	/* Buddies menu */
-	{ N_("/_Buddies"), NULL, NULL, 0, "<Branch>" },
+	{ N_("/_Buddies"), NULL, NULL, 0, "<Branch>", NULL },
 	{ N_("/Buddies/New Instant _Message..."), "<CTL>M", gaim_gtkdialogs_im, 0, "<StockItem>", GAIM_STOCK_IM },
 	{ N_("/Buddies/Join a _Chat..."), "<CTL>C", gaim_gtk_blist_joinchat_show, 0, "<StockItem>", GAIM_STOCK_CHAT },
 	{ N_("/Buddies/Get User _Info..."), "<CTL>I", gaim_gtkdialogs_info, 0, "<StockItem>", GAIM_STOCK_INFO },
 	{ N_("/Buddies/View User _Log..."), "<CTL>L", gaim_gtkdialogs_log, 0, "<StockItem>", GAIM_STOCK_LOG },
-	{ "/Buddies/sep1", NULL, NULL, 0, "<Separator>" },
-	{ N_("/Buddies/Show _Offline Buddies"), NULL, gaim_gtk_blist_edit_mode_cb, 1, "<CheckItem>"},
-	{ N_("/Buddies/Show _Empty Groups"), NULL, gaim_gtk_blist_show_empty_groups_cb, 1, "<CheckItem>"},
-	{ N_("/Buddies/Show Buddy _Details"), NULL, gaim_gtk_blist_buddy_details_cb, 1, "<CheckItem>"},
-	{ N_("/Buddies/_Sort Buddies"), NULL, NULL, 0, "<Branch>" },
-	{ "/Buddies/sep2", NULL, NULL, 0, "<Separator>" },
+	{ "/Buddies/sep1", NULL, NULL, 0, "<Separator>", NULL },
+	{ N_("/Buddies/Show _Offline Buddies"), NULL, gaim_gtk_blist_edit_mode_cb, 1, "<CheckItem>", NULL },
+	{ N_("/Buddies/Show _Empty Groups"), NULL, gaim_gtk_blist_show_empty_groups_cb, 1, "<CheckItem>", NULL },
+	{ N_("/Buddies/Show Buddy _Details"), NULL, gaim_gtk_blist_buddy_details_cb, 1, "<CheckItem>", NULL },
+	{ N_("/Buddies/_Sort Buddies"), NULL, NULL, 0, "<Branch>", NULL },
+	{ "/Buddies/sep2", NULL, NULL, 0, "<Separator>", NULL },
 	{ N_("/Buddies/_Add Buddy..."), "<CTL>B", gaim_gtk_blist_add_buddy_cb, 0, "<StockItem>", GTK_STOCK_ADD },
 	{ N_("/Buddies/Add C_hat..."), NULL, gaim_gtk_blist_add_chat_cb, 0, "<StockItem>", GTK_STOCK_ADD },
 	{ N_("/Buddies/Add _Group..."), NULL, gaim_blist_request_add_group, 0, "<StockItem>", GTK_STOCK_ADD },
-	{ "/Buddies/sep2", NULL, NULL, 0, "<Separator>" },
+	{ "/Buddies/sep2", NULL, NULL, 0, "<Separator>", NULL },
 	{ N_("/Buddies/_Quit"), "<CTL>Q", gaim_core_quit, 0, "<StockItem>", GTK_STOCK_QUIT }, 
 
 	/* Accounts menu */
-	{ N_("/_Accounts"), NULL, NULL, 0, "<Branch>" },
+	{ N_("/_Accounts"), NULL, NULL, 0, "<Branch>", NULL },
 	{ N_("/Accounts/Add\\/Edit"), "<CTL>A", gaim_gtk_accounts_window_show, 0, "<StockItem>", GAIM_STOCK_ACCOUNTS },
 
 	/* Tools */
-	{ N_("/_Tools"), NULL, NULL, 0, "<Branch>" },
+	{ N_("/_Tools"), NULL, NULL, 0, "<Branch>", NULL },
 	{ N_("/Tools/Buddy _Pounces"), NULL, gaim_gtk_pounces_manager_show, 0, "<StockItem>", GAIM_STOCK_POUNCE },
 	{ N_("/Tools/Plu_gins"), "<CTL>U", gaim_gtk_plugin_dialog_show, 0, "<StockItem>", GAIM_STOCK_PLUGIN },
 	{ N_("/Tools/Pr_eferences"), "<CTL>P", gaim_gtk_prefs_show, 0, "<StockItem>", GTK_STOCK_PREFERENCES },
 	{ N_("/Tools/Pr_ivacy"), NULL, gaim_gtk_privacy_dialog_show, 0, "<StockItem>", GTK_STOCK_DIALOG_ERROR },
-	{ "/Tools/sep2", NULL, NULL, 0, "<Separator>" },
+	{ "/Tools/sep2", NULL, NULL, 0, "<Separator>", NULL },
 	{ N_("/Tools/_File Transfers"), "<CTL>T", gaim_show_xfer_dialog, 0, "<StockItem>", GAIM_STOCK_FILE_TRANSFER },
 	{ N_("/Tools/R_oom List"), NULL, gaim_gtk_roomlist_dialog_show, 0, "<StockItem>", GTK_STOCK_INDEX },
 	{ N_("/Tools/System _Log"), NULL, gtk_blist_show_systemlog_cb, 0, "<StockItem>", GAIM_STOCK_LOG },
-	{ "/Tools/sep3", NULL, NULL, 0, "<Separator>" },
-	{ N_("/Tools/Mute _Sounds"), "<CTL>S", gaim_gtk_blist_mute_sounds_cb, 0, "<CheckItem>"},
+	{ "/Tools/sep3", NULL, NULL, 0, "<Separator>", NULL },
+	{ N_("/Tools/Mute _Sounds"), "<CTL>S", gaim_gtk_blist_mute_sounds_cb, 0, "<CheckItem>", NULL },
 
 	/* Help */
-	{ N_("/_Help"), NULL, NULL, 0, "<Branch>" },
+	{ N_("/_Help"), NULL, NULL, 0, "<Branch>", NULL },
 	{ N_("/Help/Online _Help"), "F1", gtk_blist_show_onlinehelp_cb, 0, "<StockItem>", GTK_STOCK_HELP },
 	{ N_("/Help/_Debug Window"), NULL, toggle_debug, 0, "<StockItem>", GAIM_STOCK_DEBUG },
 	{ N_("/Help/_About"), NULL, gaim_gtkdialogs_about, 0,  "<StockItem>", GAIM_STOCK_ABOUT },
@@ -5096,8 +5111,6 @@
 static void sort_method_alphabetical(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
 {
 	GtkTreeIter more_z;
-	GaimBlistNode *n;
-	GValue val = {0,};
 
 	const char *my_name;
 
@@ -5117,9 +5130,12 @@
 	}
 
 	do {
+		GValue val;
+		GaimBlistNode *n;
 		const char *this_name;
 		int cmp;
 
+		val.g_type = 0;
 		gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
 		n = g_value_get_pointer(&val);
 
@@ -5160,8 +5176,6 @@
 static void sort_method_status(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
 {
 	GtkTreeIter more_z;
-	GaimBlistNode *n;
-	GValue val = {0,};
 
 	GaimBuddy *my_buddy, *this_buddy;
 
@@ -5187,9 +5201,12 @@
 	}
 
 	do {
+		GValue val;
+		GaimBlistNode *n;
 		gint name_cmp;
 		gint presence_cmp;
 
+		val.g_type = 0;
 		gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
 		n = g_value_get_pointer(&val);
 
@@ -5248,8 +5265,6 @@
 static void sort_method_log(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
 {
 	GtkTreeIter more_z;
-	GaimBlistNode *n = NULL, *n2;
-	GValue val = {0,};
 
 	int log_size = 0, this_log_size = 0;
 	const char *buddy_name, *this_buddy_name;
@@ -5260,6 +5275,7 @@
 	}
 
 	if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
+		GaimBlistNode *n;
 		for (n = node->child; n; n = n->next)
 			log_size += gaim_log_get_total_size(GAIM_LOG_IM, ((GaimBuddy*)(n))->name, ((GaimBuddy*)(n))->account);
 		buddy_name = gaim_contact_get_alias((GaimContact*)node);
@@ -5285,8 +5301,12 @@
 	}
 
 	do {
+		GValue val;
+		GaimBlistNode *n;
+		GaimBlistNode *n2;
 		int cmp;
 
+		val.g_type = 0;
 		gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
 		n = g_value_get_pointer(&val);
 		this_log_size = 0;
--- a/src/gtkcellrendererprogress.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtkcellrendererprogress.c	Wed Dec 21 18:36:19 2005 +0000
@@ -96,6 +96,7 @@
 					sizeof (GaimGtkCellRendererProgress),
 					0,              /* n_preallocs */
 					(GInstanceInitFunc) gaim_gtk_cell_renderer_progress_init,
+					NULL		/* value_table */
 				};
 			
 			cell_progress_type =
--- a/src/gtkconv.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtkconv.c	Wed Dec 21 18:36:19 2005 +0000
@@ -2504,12 +2504,12 @@
 static GtkItemFactoryEntry menu_items[] =
 {
 	/* Conversation menu */
-	{ N_("/_Conversation"), NULL, NULL, 0, "<Branch>" },
+	{ N_("/_Conversation"), NULL, NULL, 0, "<Branch>", NULL },
 
 	{ N_("/Conversation/New Instant _Message..."), "<CTL>M", menu_new_conv_cb,
 			0, "<StockItem>", GAIM_STOCK_IM },
 
-	{ "/Conversation/sep0", NULL, NULL, 0, "<Separator>" },
+	{ "/Conversation/sep0", NULL, NULL, 0, "<Separator>", NULL },
 
 	{ N_("/Conversation/_Find..."), NULL, menu_find_cb, 0,
 			"<StockItem>", GTK_STOCK_FIND },
@@ -2518,7 +2518,7 @@
 			"<StockItem>", GTK_STOCK_SAVE_AS },
 	{ N_("/Conversation/Clea_r"), "<CTL>L", menu_clear_cb, 0, "<StockItem>", GTK_STOCK_CLEAR },
 
-	{ "/Conversation/sep1", NULL, NULL, 0, "<Separator>" },
+	{ "/Conversation/sep1", NULL, NULL, 0, "<Separator>", NULL },
 
 	{ N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", GAIM_STOCK_FILE_TRANSFER },
 	{ N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
@@ -2528,7 +2528,7 @@
 	{ N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0,
 			"<StockItem>", GAIM_STOCK_INVITE },
 
-	{ "/Conversation/sep2", NULL, NULL, 0, "<Separator>" },
+	{ "/Conversation/sep2", NULL, NULL, 0, "<Separator>", NULL },
 
 	{ N_("/Conversation/Al_ias..."), NULL, menu_alias_cb, 0,
 			"<StockItem>", GAIM_STOCK_EDIT },
@@ -2539,26 +2539,26 @@
 	{ N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0,
 			"<StockItem>", GTK_STOCK_REMOVE },
 
-	{ "/Conversation/sep3", NULL, NULL, 0, "<Separator>" },
+	{ "/Conversation/sep3", NULL, NULL, 0, "<Separator>", NULL },
 
 	{ N_("/Conversation/Insert Lin_k..."), NULL, menu_insert_link_cb, 0,
 			"<StockItem>", GAIM_STOCK_LINK },
 	{ N_("/Conversation/Insert Imag_e..."), NULL, menu_insert_image_cb, 0,
 			"<StockItem>", GAIM_STOCK_IMAGE },
 
-	{ "/Conversation/sep4", NULL, NULL, 0, "<Separator>" },
+	{ "/Conversation/sep4", NULL, NULL, 0, "<Separator>", NULL },
 
 	{ N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0,
 			"<StockItem>", GTK_STOCK_CLOSE },
 
 	/* Options */
-	{ N_("/_Options"), NULL, NULL, 0, "<Branch>" },
-	{ N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" },
-	{ N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" },
-	{ N_("/Options/Show Buddy _Icon"), NULL, menu_buddyicon_cb, 0, "<CheckItem>" },
-	{ "/Options/sep0", NULL, NULL, 0, "<Separator>" },
-	{ N_("/Options/Show Formatting _Toolbars"), NULL, menu_toolbar_cb, 0, "<CheckItem>" },
-	{ N_("/Options/Show Ti_mestamps"), "F2", menu_timestamps_cb, 0, "<CheckItem>" },
+	{ N_("/_Options"), NULL, NULL, 0, "<Branch>", NULL },
+	{ N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>", NULL },
+	{ N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>", NULL },
+	{ N_("/Options/Show Buddy _Icon"), NULL, menu_buddyicon_cb, 0, "<CheckItem>", NULL },
+	{ "/Options/sep0", NULL, NULL, 0, "<Separator>", NULL },
+	{ N_("/Options/Show Formatting _Toolbars"), NULL, menu_toolbar_cb, 0, "<CheckItem>", NULL },
+	{ N_("/Options/Show Ti_mestamps"), "F2", menu_timestamps_cb, 0, "<CheckItem>", NULL },
 };
 
 static const int menu_item_count =
--- a/src/gtkft.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtkft.c	Wed Dec 21 18:36:19 2005 +0000
@@ -383,10 +383,11 @@
 	GaimXfer *xfer = NULL;
 
 	if (gtk_tree_selection_get_selected(selection, NULL, &iter)) {
-		GValue val = {0, };
+		GValue val;
 
 		gtk_widget_set_sensitive(dialog->expander, TRUE);
 
+		val.g_type = 0;
 		gtk_tree_model_get_value(GTK_TREE_MODEL(dialog->model),
 								 &iter, COLUMN_DATA, &val);
 
--- a/src/gtkimhtml.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtkimhtml.c	Wed Dec 21 18:36:19 2005 +0000
@@ -1446,7 +1446,8 @@
 			NULL,
 			sizeof (GtkIMHtml),
 			0,
-			(GInstanceInitFunc) gtk_imhtml_init
+			(GInstanceInitFunc) gtk_imhtml_init,
+			NULL
 		};
 
 		imhtml_type = g_type_register_static(gtk_text_view_get_type(),
--- a/src/gtkimhtmltoolbar.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtkimhtmltoolbar.c	Wed Dec 21 18:36:19 2005 +0000
@@ -1086,7 +1086,8 @@
 			NULL,
 			sizeof (GtkIMHtmlToolbar),
 			0,
-			(GInstanceInitFunc) gtk_imhtmltoolbar_init
+			(GInstanceInitFunc) gtk_imhtmltoolbar_init,
+			NULL
 		};
 
 		imhtmltoolbar_type = g_type_register_static(GTK_TYPE_HBOX,
--- a/src/gtklog.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtklog.c	Wed Dec 21 18:36:19 2005 +0000
@@ -175,7 +175,7 @@
 
 static void log_select_cb(GtkTreeSelection *sel, GaimGtkLogViewer *viewer) {
 	GtkTreeIter   iter;
-	GValue val = { 0, };
+	GValue val;
 	GtkTreeModel *model = GTK_TREE_MODEL(viewer->treestore);
 	GaimLog *log = NULL;
 	GdkCursor *cursor;
@@ -185,6 +185,8 @@
 
 	if (!gtk_tree_selection_get_selected(sel, &model, &iter))
 		return;
+
+	val.g_type = 0;
 	gtk_tree_model_get_value (model, &iter, 1, &val);
 	log = g_value_get_pointer(&val);
 	g_value_unset(&val);
--- a/src/gtkmain.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtkmain.c	Wed Dec 21 18:36:19 2005 +0000
@@ -466,6 +466,11 @@
 	debug_enabled = FALSE;
 #endif
 
+#ifdef GAIM_FATAL_ASSERTS
+	/* Make g_return_... functions fatal. */
+	g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL);
+#endif
+
 #ifndef _WIN32
 	br_set_locate_fallback_func(gaim_find_binary_location, argv[0]);
 #endif
--- a/src/gtknotify.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtknotify.c	Wed Dec 21 18:36:19 2005 +0000
@@ -456,9 +456,10 @@
 		gtk_list_store_set(model, &iter, 0, scaled, -1);
 
 		for (j = 1; j < col_num; j++) {
-			GValue v = {0, };
+			GValue v;
 			char *escaped = g_markup_escape_text(g_list_nth_data(row, j - 1), -1);
 
+			v.g_type = 0;
 			g_value_init(&v, G_TYPE_STRING);
 			g_value_set_string(&v, escaped);
 			gtk_list_store_set_value(model, &iter, j, &v);
--- a/src/gtkplugin.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtkplugin.c	Wed Dec 21 18:36:19 2005 +0000
@@ -236,7 +236,7 @@
 {
 	gchar *buf, *pname, *pdesc, *pauth, *pweb;
 	GtkTreeIter  iter;
-	GValue val = { 0, };
+	GValue val;
 	GaimPlugin *plug;
 
 	if (!gtk_tree_selection_get_selected (sel, &model, &iter))
@@ -254,6 +254,7 @@
 
 	gtk_widget_set_sensitive(expander, TRUE);
 
+	val.g_type = 0;
 	gtk_tree_model_get_value (model, &iter, 2, &val);
 	plug = g_value_get_pointer(&val);
 
@@ -298,7 +299,7 @@
 	GaimPlugin *plug;
 	GtkWidget *dialog, *box;
 	GtkTreeModel *model;
-	GValue val = { 0, };
+	GValue val;
 	GtkTreeIter iter;
 
 	switch (response) {
@@ -314,7 +315,8 @@
 	case GAIM_RESPONSE_CONFIGURE:
 		if (! gtk_tree_selection_get_selected (sel, &model, &iter))
 			return;
-		gtk_tree_model_get_value (model, &iter, 2, &val);
+		val.g_type = 0;
+		gtk_tree_model_get_value(model, &iter, 2, &val);
 		plug = g_value_get_pointer(&val);
 		if (plug == NULL)
 			break;
--- a/src/gtkprefs.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtkprefs.c	Wed Dec 21 18:36:19 2005 +0000
@@ -366,7 +366,7 @@
 	GtkTreeIter  iter;
 	const char *themename;
 	char *description;
-	GValue val = { 0, };
+	GValue val;
 	GtkTreePath *path, *oldpath;
 	struct smiley_theme *new_theme, *old_theme;
 
@@ -374,6 +374,7 @@
 		return;
 
 	old_theme = current_smiley_theme;
+	val.g_type = 0;
 	gtk_tree_model_get_value(model, &iter, 3, &val);
 	path = gtk_tree_model_get_path(model, &iter);
 	themename = g_value_get_string(&val);
@@ -1430,12 +1431,14 @@
 
 static void prefs_sound_sel(GtkTreeSelection *sel, GtkTreeModel *model) {
 	GtkTreeIter  iter;
-	GValue val = { 0, };
+	GValue val;
 	const char *file;
 	char *pref;
 
 	if (! gtk_tree_selection_get_selected (sel, &model, &iter))
 		return;
+
+	val.g_type = 0;
 	gtk_tree_model_get_value (model, &iter, 3, &val);
 	sound_row_sel = g_value_get_uint(&val);
 
--- a/src/gtkrequest.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtkrequest.c	Wed Dec 21 18:36:19 2005 +0000
@@ -763,12 +763,13 @@
 		const gchar *key, GtkTreeIter *iter, gpointer user_data)
 {
 	GtkTreeModel *model;
-	GValue val1 = { 0, };
-	GValue val2 = { 0, };
+	GValue val1;
+	GValue val2;
 	const char *tmp;
 
 	model = gtk_entry_completion_get_model (completion);
 
+	val1.g_type = 0;
 	gtk_tree_model_get_value(model, iter, 2, &val1);
 	tmp = g_value_get_string(&val1);
 	if (tmp != NULL && gaim_str_has_prefix(tmp, key))
@@ -778,6 +779,7 @@
 	}
 	g_value_unset(&val1);
 
+	val2.g_type = 0;
 	gtk_tree_model_get_value(model, iter, 3, &val2);
 	tmp = g_value_get_string(&val2);
 	if (tmp != NULL && gaim_str_has_prefix(tmp, key))
@@ -793,11 +795,12 @@
 static gboolean screenname_completion_match_selected_cb(GtkEntryCompletion *completion,
 		GtkTreeModel *model, GtkTreeIter *iter, gpointer *user_data)
 {
-	GValue val = { 0, };
+	GValue val;
 	GaimRequestField *screen_field = user_data[1];
 	GList *fields = screen_field->group->fields;
 	GaimAccount *account;
 
+	val.g_type = 0;
 	gtk_tree_model_get_value(model, iter, 1, &val);
 	gtk_entry_set_text(GTK_ENTRY(user_data[0]), g_value_get_string(&val));
 	g_value_unset(&val);
--- a/src/gtkroomlist.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/gtkroomlist.c	Wed Dec 21 18:36:19 2005 +0000
@@ -166,7 +166,7 @@
 static void
 selection_changed_cb(GtkTreeSelection *selection, GaimGtkRoomlist *grl) {
 	GtkTreeIter iter;
-	GValue val = { 0, };
+	GValue val;
 	GaimRoomlistRoom *room;
 	static struct _menu_cb_info *info;
 	GaimGtkRoomlistDialog *dialog;
@@ -174,6 +174,7 @@
 	dialog = grl->dialog;
 
 	if (gtk_tree_selection_get_selected(selection, NULL, &iter)) {
+		val.g_type = 0;
 		gtk_tree_model_get_value(GTK_TREE_MODEL(grl->model), &iter, ROOM_COLUMN, &val);
 		room = g_value_get_pointer(&val);
 		if (!room || !(room->type & GAIM_ROOMLIST_ROOMTYPE_ROOM)) {
@@ -217,10 +218,11 @@
 	GaimGtkRoomlist *grl = list->ui_data;
 	GtkTreeIter iter;
 	GaimRoomlistRoom *room;
-	GValue val = { 0, };
+	GValue val;
 	struct _menu_cb_info info;
 
 	gtk_tree_model_get_iter(GTK_TREE_MODEL(grl->model), &iter, path);
+	val.g_type = 0;
 	gtk_tree_model_get_value(GTK_TREE_MODEL(grl->model), &iter, ROOM_COLUMN, &val);
 	room = g_value_get_pointer(&val);
 	if (!room || !(room->type & GAIM_ROOMLIST_ROOMTYPE_ROOM))
@@ -236,7 +238,7 @@
 {
 	GtkTreePath *path;
 	GaimGtkRoomlist *grl = list->ui_data;
-	GValue val = { 0, };
+	GValue val;
 	GaimRoomlistRoom *room;
 	GtkTreeIter iter;
 	GtkWidget *menu;
@@ -250,6 +252,7 @@
 		return FALSE;
 	gtk_tree_model_get_iter(GTK_TREE_MODEL(grl->model), &iter, path);
 	gtk_tree_path_free(path);
+	val.g_type = 0;
 	gtk_tree_model_get_value (GTK_TREE_MODEL(grl->model), &iter, ROOM_COLUMN, &val);
 	room = g_value_get_pointer(&val);
 
@@ -275,8 +278,9 @@
 {
 	GaimRoomlist *list = user_data;
 	GaimRoomlistRoom *category;
-	GValue val = { 0, };
+	GValue val;
 
+	val.g_type = 0;
 	gtk_tree_model_get_value(gtk_tree_view_get_model(treeview), arg1, ROOM_COLUMN, &val);
 	category = g_value_get_pointer(&val);
 
--- a/src/protocols/gg/gg.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/protocols/gg/gg.c	Wed Dec 21 18:36:19 2005 +0000
@@ -1916,7 +1916,9 @@
 	NULL,				/* roomlist_expand_category */
 	NULL,				/* can_receive_file */
 	NULL,				/* send_file */
-	NULL				/* new_xfer */
+	NULL,				/* new_xfer */
+	NULL,				/* whiteboard_prpl_ops */
+	NULL,				/* media_prpl_ops */
 };
 /* }}} */
 
--- a/src/protocols/irc/irc.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/protocols/irc/irc.c	Wed Dec 21 18:36:19 2005 +0000
@@ -775,7 +775,9 @@
 	NULL,					/* roomlist_expand_category */
 	NULL,					/* can_receive_file */
 	irc_dccsend_send_file,	/* send_file */
-	irc_dccsend_new_xfer	/* new_xfer */
+	irc_dccsend_new_xfer,	/* new_xfer */
+	NULL,					/* whiteboard_prpl_ops */
+	NULL,					/* media_prpl_ops */
 };
 
 
--- a/src/protocols/jabber/jabber.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/protocols/jabber/jabber.c	Wed Dec 21 18:36:19 2005 +0000
@@ -1733,7 +1733,8 @@
 	NULL,							/* can_receive_file */
 	jabber_si_xfer_send,			/* send_file */
 	jabber_si_new_xfer,				/* new_xfer */
-	NULL							/* whiteboard operations */
+	NULL,							/* whiteboard_prpl_ops */
+	NULL,							/* media_prpl_ops */
 };
 
 static GaimPluginInfo info =
--- a/src/protocols/msn/msn.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/protocols/msn/msn.c	Wed Dec 21 18:36:19 2005 +0000
@@ -1896,7 +1896,9 @@
 	NULL,					/* roomlist_expand_category */
 	msn_can_receive_file,	/* can_receive_file */
 	msn_send_file,			/* send_file */
-	msn_new_xfer			/* new_xfer */
+	msn_new_xfer,			/* new_xfer */
+	NULL,					/* whiteboard_prpl_ops */
+	NULL,					/* media_prpl_ops */
 };
 
 static GaimPluginInfo info =
--- a/src/protocols/novell/novell.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/protocols/novell/novell.c	Wed Dec 21 18:36:19 2005 +0000
@@ -3524,7 +3524,9 @@
 	NULL,						/* roomlist_expand_category */
 	NULL,						/* can_receive_file */
 	NULL,						/* send_file */
-	NULL						/* new_xfer */
+	NULL,						/* new_xfer */
+	NULL,						/* whiteboard_prpl_ops */
+	NULL,						/* media_prpl_ops */
 };
 
 static GaimPluginInfo info = {
--- a/src/protocols/oscar/im.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/protocols/oscar/im.c	Wed Dec 21 18:36:19 2005 +0000
@@ -113,7 +113,7 @@
 		{ AIM_CLIENTTYPE_AOL_TOC,
 		  1, {0x01}},
 
-		{ 0, 0}
+		{ 0, 0, {0x00}}
 	};
 	int i;
 
--- a/src/protocols/oscar/locate.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/protocols/oscar/locate.c	Wed Dec 21 18:36:19 2005 +0000
@@ -195,7 +195,9 @@
 	 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
 
-	{AIM_CAPS_LAST}
+	{AIM_CAPS_LAST,
+	 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
 };
 
 /*
--- a/src/protocols/oscar/oscar.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/protocols/oscar/oscar.c	Wed Dec 21 18:36:19 2005 +0000
@@ -8519,12 +8519,14 @@
 	oscar_can_receive_file,	/* can_receive_file */
 	oscar_send_file,		/* send_file */
 	oscar_new_xfer,			/* new_xfer */
-	NULL,					/* whiteboard ops */
- 	NULL					/* media ops */
+	NULL,					/* whiteboard_prpl_ops */
+ 	NULL,					/* media_prpl_ops */
 };
 
 static GaimPluginUiInfo prefs_info = {
-	get_plugin_pref_frame
+	get_plugin_pref_frame,
+	0,   /* page_num (Reserved) */
+	NULL /* frame (Reserved) */
 };
 
 static GaimPluginInfo info =
--- a/src/protocols/silc/silc.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/protocols/silc/silc.c	Wed Dec 21 18:36:19 2005 +0000
@@ -1779,7 +1779,8 @@
 	NULL,						/* can_receive_file */
 	silcgaim_ftp_send_file,		/* send_file */
 	silcgaim_ftp_new_xfer,		/* new_xfer */
-	&silcgaim_wb_ops,			/* whiteboard operations */
+	&silcgaim_wb_ops,			/* whiteboard_prpl_ops */
+	NULL,						/* media_prpl_ops */
 };
 
 static GaimPluginInfo info =
--- a/src/protocols/simple/simple.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/protocols/simple/simple.c	Wed Dec 21 18:36:19 2005 +0000
@@ -1414,7 +1414,9 @@
 	NULL,					/* roomlist_expand_category */
 	NULL,					/* can_receive_file */
 	NULL,					/* send_file */
-	NULL					/* new_xfer */
+	NULL,					/* new_xfer */
+	NULL,					/* whiteboard_prpl_ops */
+	NULL,					/* media_prpl_ops */
 };
 
 
--- a/src/protocols/yahoo/yahoo.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/protocols/yahoo/yahoo.c	Wed Dec 21 18:36:19 2005 +0000
@@ -3610,7 +3610,8 @@
 	NULL, /* can_receive_file */
 	yahoo_send_file,
 	yahoo_new_xfer,
-	&yahoo_whiteboard_prpl_ops
+	&yahoo_whiteboard_prpl_ops,
+	NULL, /* media_prpl_ops */
 };
 
 static GaimPluginInfo info =
--- a/src/protocols/yahoo/yahoo_profile.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/protocols/yahoo/yahoo_profile.c	Wed Dec 21 18:36:19 2005 +0000
@@ -622,7 +622,29 @@
 		"推薦網站連結 3:", /* TODO */
 		NULL
 	},
-	{ XX, NULL, NULL, NULL, NULL, NULL, NULL },
+	{ XX, NULL, NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		NULL
+	},
 };
 
 static char *yahoo_remove_nonbreaking_spaces(char *str)
--- a/src/protocols/zephyr/zephyr.c	Wed Dec 21 13:37:18 2005 +0000
+++ b/src/protocols/zephyr/zephyr.c	Wed Dec 21 18:36:19 2005 +0000
@@ -2830,7 +2830,9 @@
 	NULL,					/* roomlist_expand_category */
 	NULL,					/* can_receive_file */
 	NULL,					/* send_file */
-	NULL					/* new_xfer */
+	NULL,					/* new_xfer */
+	NULL,					/* whiteboard_prpl_ops */
+	NULL,					/* media_prpl_ops */
 };
 
 static GaimPluginInfo info = {