diff plugins/spellchk.c @ 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 b7a72fc48f62
children 317d1dfedeed
line wrap: on
line diff
--- 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 =