diff --git a/gtk/gtktoolbutton.c b/gtk/gtktoolbutton.c
index 6db8358..5975a51 100644
--- a/gtk/gtktoolbutton.c
+++ b/gtk/gtktoolbutton.c
@@ -916,11 +916,14 @@ gtk_tool_button_set_label (GtkToolButton *button,
   button->priv->label_text = g_strdup (label);
   button->priv->contents_invalid = TRUE;     
 
-  elided_label = _gtk_toolbar_elide_underscores (label);
-  accessible = gtk_widget_get_accessible (GTK_WIDGET (button->priv->button));
-  atk_object_set_name (accessible, elided_label);
+  if (label)
+    {
+      elided_label = _gtk_toolbar_elide_underscores (label);
+      accessible = gtk_widget_get_accessible (GTK_WIDGET (button->priv->button));
+      atk_object_set_name (accessible, elided_label);
+      g_free (elided_label);
+    }
 
-  g_free (elided_label);
   g_free (old_label);
  
   g_object_notify (G_OBJECT (button), "label");
