From c3d53e1f45eccbee038986f60cb779afe56de51a Mon Sep 17 00:00:00 2001
From: Sven Neumann <sven@gimp.org>
Date: Sun, 14 Jan 2001 15:18:37 +0000
Subject: [PATCH] Merged fixes from gimp-1-2:

2001-01-14  Sven Neumann  <sven@gimp.org>

	Merged fixes from gimp-1-2:

	* app/menus.c
	* app/plug-in.c: added some sanity checks for passed string pointers
	to various public functions in an attempt to fix bug #37622.

	* plug-ins/common/sharpen.c: applied a patch from Jerome Zago
        <jzago@ifhamy.insa-lyon.fr> that fixes a longstanding bug in the
        sharpen filter which sometimes got the last line wrong.
	Fixes bug #34155.
---
 ChangeLog                            | 13 +++++++++++++
 app/actions/plug-in-commands.c       | 11 ++++++++++-
 app/gui/menus.c                      | 20 ++++++++++++++++++--
 app/gui/plug-in-commands.c           | 11 ++++++++++-
 app/gui/plug-in-menus.c              | 11 ++++++++++-
 app/menus.c                          | 20 ++++++++++++++++++--
 app/menus/menus.c                    | 20 ++++++++++++++++++--
 app/menus/plug-in-menus.c            | 11 ++++++++++-
 app/plug-in/gimpplugin-message.c     | 11 ++++++++++-
 app/plug-in/gimpplugin-progress.c    | 11 ++++++++++-
 app/plug-in/gimpplugin.c             | 11 ++++++++++-
 app/plug-in/gimppluginmanager-call.c | 11 ++++++++++-
 app/plug-in/gimppluginmanager-run.c  | 11 ++++++++++-
 app/plug-in/gimppluginmanager.c      | 11 ++++++++++-
 app/plug-in/gimppluginshm.c          | 11 ++++++++++-
 app/plug-in/plug-in-def.c            | 11 ++++++++++-
 app/plug-in/plug-in-message.c        | 11 ++++++++++-
 app/plug-in/plug-in-params.c         | 11 ++++++++++-
 app/plug-in/plug-in-progress.c       | 11 ++++++++++-
 app/plug-in/plug-in-run.c            | 11 ++++++++++-
 app/plug-in/plug-in-shm.c            | 11 ++++++++++-
 app/plug-in/plug-in.c                | 11 ++++++++++-
 app/plug-in/plug-ins.c               | 11 ++++++++++-
 app/plug_in.c                        | 11 ++++++++++-
 app/widgets/gimpitemfactory.c        | 20 ++++++++++++++++++--
 plug-ins/common/sharpen.c            | 10 ++++++----
 26 files changed, 291 insertions(+), 32 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index c6557d75f9..da53acd405 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2001-01-14  Sven Neumann  <sven@gimp.org>
+
+	Merged fixes from gimp-1-2:
+
+	* app/menus.c
+	* app/plug-in.c: added some sanity checks for passed string pointers
+	to various public functions in an attempt to fix bug #37622.
+
+	* plug-ins/common/sharpen.c: applied a patch from Jerome Zago 
+        <jzago@ifhamy.insa-lyon.fr> that fixes a longstanding bug in the
+        sharpen filter which sometimes got the last line wrong. 
+	Fixes bug #34155.
+	
 2001-01-14  Michael Natterer  <mitch@gimp.org>
 
 	* app/apptypes.h
diff --git a/app/actions/plug-in-commands.c b/app/actions/plug-in-commands.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/actions/plug-in-commands.c
+++ b/app/actions/plug-in-commands.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/gui/menus.c b/app/gui/menus.c
index 0732fb7c6d..e9cf7ce61d 100644
--- a/app/gui/menus.c
+++ b/app/gui/menus.c
@@ -855,12 +855,18 @@ menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
 				  gpointer              callback_data)
 {
   GtkItemFactory *item_factory;
-  gchar *path;
+  gchar          *path;
+
+  g_return_if_fail (entry != NULL);
 
   if (!menus_initialized)
     menus_init ();
 
   path = entry->entry.path;
+
+  if (!path)
+    return;
+
   item_factory = gtk_item_factory_from_path (path);
 
   if (!item_factory)
@@ -889,6 +895,9 @@ menus_create_branches (GtkItemFactory       *item_factory,
   gchar   *p;
   gchar   *path;
 
+  if (! entry->entry.path)
+    return;
+
   tearoff_path = g_string_new ("");
 
   path = entry->entry.path;
@@ -1205,6 +1214,9 @@ menus_set_sensitive (gchar    *path,
   GtkItemFactory *ifactory;
   GtkWidget *widget = NULL;
 
+  if (! path)
+    return;
+
   if (!menus_initialized)
     menus_init ();
 
@@ -1354,6 +1366,8 @@ menus_last_opened_add (gchar *filename)
   GtkWidget *menu_item;
   guint      num_entries;
 
+  g_return_if_fail (filename != NULL);
+
   /*  do nothing if we've already got the filename on the list  */
   for (list = last_opened_raw_filenames; list; list = g_slist_next (list))
     {
@@ -1816,7 +1830,9 @@ menu_translate (const gchar *path,
 	  complete = g_strconcat (factory, complete, NULL);
 	  translation = g_strdup (dgettext (domain, complete));
 
-	  while (*complete && *translation && strcmp (complete, menupath))
+	  while (complete && *complete && 
+		 translation && *translation && 
+		 strcmp (complete, menupath))
 	    {
 	      p = strrchr (complete, '/');
 	      t = strrchr (translation, '/');
diff --git a/app/gui/plug-in-commands.c b/app/gui/plug-in-commands.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/gui/plug-in-commands.c
+++ b/app/gui/plug-in-commands.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/gui/plug-in-menus.c b/app/gui/plug-in-menus.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/gui/plug-in-menus.c
+++ b/app/gui/plug-in-menus.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/menus.c b/app/menus.c
index 0732fb7c6d..e9cf7ce61d 100644
--- a/app/menus.c
+++ b/app/menus.c
@@ -855,12 +855,18 @@ menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
 				  gpointer              callback_data)
 {
   GtkItemFactory *item_factory;
-  gchar *path;
+  gchar          *path;
+
+  g_return_if_fail (entry != NULL);
 
   if (!menus_initialized)
     menus_init ();
 
   path = entry->entry.path;
+
+  if (!path)
+    return;
+
   item_factory = gtk_item_factory_from_path (path);
 
   if (!item_factory)
@@ -889,6 +895,9 @@ menus_create_branches (GtkItemFactory       *item_factory,
   gchar   *p;
   gchar   *path;
 
+  if (! entry->entry.path)
+    return;
+
   tearoff_path = g_string_new ("");
 
   path = entry->entry.path;
@@ -1205,6 +1214,9 @@ menus_set_sensitive (gchar    *path,
   GtkItemFactory *ifactory;
   GtkWidget *widget = NULL;
 
+  if (! path)
+    return;
+
   if (!menus_initialized)
     menus_init ();
 
@@ -1354,6 +1366,8 @@ menus_last_opened_add (gchar *filename)
   GtkWidget *menu_item;
   guint      num_entries;
 
+  g_return_if_fail (filename != NULL);
+
   /*  do nothing if we've already got the filename on the list  */
   for (list = last_opened_raw_filenames; list; list = g_slist_next (list))
     {
@@ -1816,7 +1830,9 @@ menu_translate (const gchar *path,
 	  complete = g_strconcat (factory, complete, NULL);
 	  translation = g_strdup (dgettext (domain, complete));
 
-	  while (*complete && *translation && strcmp (complete, menupath))
+	  while (complete && *complete && 
+		 translation && *translation && 
+		 strcmp (complete, menupath))
 	    {
 	      p = strrchr (complete, '/');
 	      t = strrchr (translation, '/');
diff --git a/app/menus/menus.c b/app/menus/menus.c
index 0732fb7c6d..e9cf7ce61d 100644
--- a/app/menus/menus.c
+++ b/app/menus/menus.c
@@ -855,12 +855,18 @@ menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
 				  gpointer              callback_data)
 {
   GtkItemFactory *item_factory;
-  gchar *path;
+  gchar          *path;
+
+  g_return_if_fail (entry != NULL);
 
   if (!menus_initialized)
     menus_init ();
 
   path = entry->entry.path;
+
+  if (!path)
+    return;
+
   item_factory = gtk_item_factory_from_path (path);
 
   if (!item_factory)
@@ -889,6 +895,9 @@ menus_create_branches (GtkItemFactory       *item_factory,
   gchar   *p;
   gchar   *path;
 
+  if (! entry->entry.path)
+    return;
+
   tearoff_path = g_string_new ("");
 
   path = entry->entry.path;
@@ -1205,6 +1214,9 @@ menus_set_sensitive (gchar    *path,
   GtkItemFactory *ifactory;
   GtkWidget *widget = NULL;
 
+  if (! path)
+    return;
+
   if (!menus_initialized)
     menus_init ();
 
@@ -1354,6 +1366,8 @@ menus_last_opened_add (gchar *filename)
   GtkWidget *menu_item;
   guint      num_entries;
 
+  g_return_if_fail (filename != NULL);
+
   /*  do nothing if we've already got the filename on the list  */
   for (list = last_opened_raw_filenames; list; list = g_slist_next (list))
     {
@@ -1816,7 +1830,9 @@ menu_translate (const gchar *path,
 	  complete = g_strconcat (factory, complete, NULL);
 	  translation = g_strdup (dgettext (domain, complete));
 
-	  while (*complete && *translation && strcmp (complete, menupath))
+	  while (complete && *complete && 
+		 translation && *translation && 
+		 strcmp (complete, menupath))
 	    {
 	      p = strrchr (complete, '/');
 	      t = strrchr (translation, '/');
diff --git a/app/menus/plug-in-menus.c b/app/menus/plug-in-menus.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/menus/plug-in-menus.c
+++ b/app/menus/plug-in-menus.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/gimpplugin-message.c b/app/plug-in/gimpplugin-message.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/gimpplugin-message.c
+++ b/app/plug-in/gimpplugin-message.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/gimpplugin-progress.c b/app/plug-in/gimpplugin-progress.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/gimpplugin-progress.c
+++ b/app/plug-in/gimpplugin-progress.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/gimpplugin.c b/app/plug-in/gimpplugin.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/gimpplugin.c
+++ b/app/plug-in/gimpplugin.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/gimppluginmanager-call.c b/app/plug-in/gimppluginmanager-call.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/gimppluginmanager-call.c
+++ b/app/plug-in/gimppluginmanager-call.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/gimppluginmanager-run.c b/app/plug-in/gimppluginmanager-run.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/gimppluginmanager-run.c
+++ b/app/plug-in/gimppluginmanager-run.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/gimppluginmanager.c b/app/plug-in/gimppluginmanager.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/gimppluginmanager.c
+++ b/app/plug-in/gimppluginmanager.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/gimppluginshm.c b/app/plug-in/gimppluginshm.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/gimppluginshm.c
+++ b/app/plug-in/gimppluginshm.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/plug-in-def.c b/app/plug-in/plug-in-def.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/plug-in-def.c
+++ b/app/plug-in/plug-in-def.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/plug-in-message.c b/app/plug-in/plug-in-message.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/plug-in-message.c
+++ b/app/plug-in/plug-in-message.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/plug-in-params.c b/app/plug-in/plug-in-params.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/plug-in-params.c
+++ b/app/plug-in/plug-in-params.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/plug-in-progress.c b/app/plug-in/plug-in-progress.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/plug-in-progress.c
+++ b/app/plug-in/plug-in-progress.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/plug-in-run.c b/app/plug-in/plug-in-run.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/plug-in-run.c
+++ b/app/plug-in/plug-in-run.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/plug-in-shm.c b/app/plug-in/plug-in-shm.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/plug-in-shm.c
+++ b/app/plug-in/plug-in-shm.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/plug-in.c b/app/plug-in/plug-in.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/plug-in.c
+++ b/app/plug-in/plug-in.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug-in/plug-ins.c b/app/plug-in/plug-ins.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug-in/plug-ins.c
+++ b/app/plug-in/plug-ins.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/plug_in.c b/app/plug_in.c
index 1981ec16ad..bcf1e1813b 100644
--- a/app/plug_in.c
+++ b/app/plug_in.c
@@ -498,6 +498,8 @@ plug_in_add (gchar *prog,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_if_fail (prog != NULL);
+
   if (strncmp ("plug_in_", prog, 8) != 0)
     {
       gchar *t = g_strdup_printf ("plug_in_%s", prog);
@@ -554,6 +556,8 @@ plug_in_image_types (gchar *name)
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -618,6 +622,8 @@ plug_in_file_handler (gchar *name,
   PlugInProcDef *proc_def;
   GSList        *tmp;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   if (current_plug_in)
     {
       plug_in_def = current_plug_in->user_data;
@@ -783,6 +789,8 @@ plug_in_menu_path (gchar *name)
   PlugInProcDef *proc_def;
   GSList *tmp, *tmp2;
 
+  g_return_val_if_fail (name != NULL, NULL);
+
   for (tmp = plug_in_defs; tmp; tmp = g_slist_next (tmp))
     {
       plug_in_def = tmp->data;
@@ -1764,7 +1772,8 @@ plug_in_handle_proc_return (GPProcReturn *proc_return)
 	  blocked = tmp->data;
 	  tmp = tmp->next;
 
-	  if (strcmp (blocked->proc_name, proc_return->name) == 0)
+	  if (blocked->proc_name && proc_return->name && 
+	      strcmp (blocked->proc_name, proc_return->name) == 0)
 	    {
 	      plug_in_push (blocked->plug_in);
 	      if (!gp_proc_return_write (current_writechannel, proc_return))
diff --git a/app/widgets/gimpitemfactory.c b/app/widgets/gimpitemfactory.c
index 0732fb7c6d..e9cf7ce61d 100644
--- a/app/widgets/gimpitemfactory.c
+++ b/app/widgets/gimpitemfactory.c
@@ -855,12 +855,18 @@ menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
 				  gpointer              callback_data)
 {
   GtkItemFactory *item_factory;
-  gchar *path;
+  gchar          *path;
+
+  g_return_if_fail (entry != NULL);
 
   if (!menus_initialized)
     menus_init ();
 
   path = entry->entry.path;
+
+  if (!path)
+    return;
+
   item_factory = gtk_item_factory_from_path (path);
 
   if (!item_factory)
@@ -889,6 +895,9 @@ menus_create_branches (GtkItemFactory       *item_factory,
   gchar   *p;
   gchar   *path;
 
+  if (! entry->entry.path)
+    return;
+
   tearoff_path = g_string_new ("");
 
   path = entry->entry.path;
@@ -1205,6 +1214,9 @@ menus_set_sensitive (gchar    *path,
   GtkItemFactory *ifactory;
   GtkWidget *widget = NULL;
 
+  if (! path)
+    return;
+
   if (!menus_initialized)
     menus_init ();
 
@@ -1354,6 +1366,8 @@ menus_last_opened_add (gchar *filename)
   GtkWidget *menu_item;
   guint      num_entries;
 
+  g_return_if_fail (filename != NULL);
+
   /*  do nothing if we've already got the filename on the list  */
   for (list = last_opened_raw_filenames; list; list = g_slist_next (list))
     {
@@ -1816,7 +1830,9 @@ menu_translate (const gchar *path,
 	  complete = g_strconcat (factory, complete, NULL);
 	  translation = g_strdup (dgettext (domain, complete));
 
-	  while (*complete && *translation && strcmp (complete, menupath))
+	  while (complete && *complete && 
+		 translation && *translation && 
+		 strcmp (complete, menupath))
 	    {
 	      p = strrchr (complete, '/');
 	      t = strrchr (translation, '/');
diff --git a/plug-ins/common/sharpen.c b/plug-ins/common/sharpen.c
index 381aa3fc17..f8541c0c07 100644
--- a/plug-ins/common/sharpen.c
+++ b/plug-ins/common/sharpen.c
@@ -462,10 +462,12 @@ sharpen (void)
 	}
       else if (count == 2)
 	{
-	  if (y == sel_y1)
-	    gimp_pixel_rgn_set_row (&dst_rgn, src_rows[0], sel_x1, y, sel_width);
-	  else
-	    gimp_pixel_rgn_set_row (&dst_rgn, src_rows[2], sel_x1, y, sel_width);
+	  if (y == sel_y1)	/* first row */
+	    gimp_pixel_rgn_set_row (&dst_rgn, src_rows[0], 
+				    sel_x1, y, sel_width);
+	  else                  /* last row  */
+	    gimp_pixel_rgn_set_row (&dst_rgn, src_rows[(sel_height - 1) & 3], 
+				    sel_x1, y, sel_width);
 	};
 
       if ((y & 15) == 0)