SF.net SVN: geany-plugins:[250] trunk/spellcheck

eht16 at users.sourceforge.net eht16 at xxxxx
Sat Oct 25 09:09:05 UTC 2008


Revision: 250
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=250&view=rev
Author:   eht16
Date:     2008-10-25 09:09:05 +0000 (Sat, 25 Oct 2008)

Log Message:
-----------
Add some error checking and prevent crashes if Enchant doesn't provide any dictionaries.

Modified Paths:
--------------
    trunk/spellcheck/ChangeLog
    trunk/spellcheck/src/speller.c

Modified: trunk/spellcheck/ChangeLog
===================================================================
--- trunk/spellcheck/ChangeLog	2008-10-23 23:48:27 UTC (rev 249)
+++ trunk/spellcheck/ChangeLog	2008-10-25 09:09:05 UTC (rev 250)
@@ -1,3 +1,10 @@
+2008-10-25  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
+
+ * src/speller.c:
+   Add some error checking and prevent crashes if Enchant doesn't
+   provide any dictionaries.
+
+
 2008-10-17  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * src/spellcheck.c, src/scplugin.c, src/gui.c, src/speller.c,

Modified: trunk/spellcheck/src/speller.c
===================================================================
--- trunk/spellcheck/src/speller.c	2008-10-23 23:48:27 UTC (rev 249)
+++ trunk/spellcheck/src/speller.c	2008-10-25 09:09:05 UTC (rev 250)
@@ -65,6 +65,8 @@
 	gchar **suggs;
 	GString *str = g_string_sized_new(256);
 
+	g_return_val_if_fail(speller_dict != NULL, 0);
+
 	/* ignore numbers or words starting with digits */
 	if (isdigit(*word))
 		return 0;
@@ -154,6 +156,8 @@
 	gchar *dict_string = NULL;
 	gint suggestions_found = 0;
 
+	g_return_if_fail(speller_dict != NULL);
+
 	enchant_dict_describe(speller_dict, dict_describe, &dict_string);
 
 	if (p_sci->has_selection(doc->editor->sci))
@@ -235,9 +239,14 @@
 	 * one in the list if not */
 	if (! check_default_lang())
 	{
-		lang = g_ptr_array_index(sc->dicts, 0);
-		g_warning("Stored language ('%s') could not be loaded. Falling back to '%s'",
-			sc->default_language, lang);
+		if (sc->dicts->len > 0)
+		{
+			lang = g_ptr_array_index(sc->dicts, 0);
+			g_warning("Stored language ('%s') could not be loaded. Falling back to '%s'",
+				sc->default_language, lang);
+		}
+		else
+			g_warning("Stored language ('%s') could not be loaded.", sc->default_language);
 	}
 
 	/* Request new dict object */
@@ -313,6 +322,8 @@
 
 void speller_dict_free_string_list(gchar **tmp_suggs)
 {
+	g_return_if_fail(speller_dict != NULL);
+
 	enchant_dict_free_string_list(speller_dict, tmp_suggs);
 }
 
@@ -325,12 +336,16 @@
 
 gboolean speller_dict_check(const gchar *word)
 {
+	g_return_val_if_fail(speller_dict != NULL, FALSE);
+
 	return enchant_dict_check(speller_dict, word, -1);
 }
 
 
 gchar **speller_dict_suggest(const gchar *word, gsize *n_suggs)
 {
+	g_return_val_if_fail(speller_dict != NULL, NULL);
+
 	return enchant_dict_suggest(speller_dict, word, -1, n_suggs);
 }
 
@@ -347,6 +362,7 @@
 
 void speller_free(void)
 {
-	enchant_broker_free_dict(speller_broker, speller_dict);
+	if (speller_dict != NULL)
+		enchant_broker_free_dict(speller_broker, speller_dict);
 	enchant_broker_free(speller_broker);
 }


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Plugins-Commits mailing list