Value Label Dialog: Do not attempt to read selection if there is none.
authorJohn Darrington <john@darrington.wattle.id.au>
Sun, 31 May 2015 20:34:42 +0000 (22:34 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sun, 31 May 2015 20:34:42 +0000 (22:34 +0200)
Fixes bug #45215.

src/ui/gui/val-labs-dialog.c

index 0d1c757e82535598a5be177e2d3c7e5bbbe5a5dd..56399aa271f3b3b6ee4739c33b3640a008c6472b 100644 (file)
@@ -278,7 +278,7 @@ on_value_entry_change (GtkEntry *entry, gpointer data)
 
 
 /* Return the value-label pair currently selected in the dialog box  */
-static void
+static gboolean
 get_selected_tuple (PsppireValLabsDialog *dialog,
                     union value *valuep, const char **label)
 {
@@ -292,7 +292,8 @@ get_selected_tuple (PsppireValLabsDialog *dialog,
 
   GtkTreeModel * model  = gtk_tree_view_get_model (treeview);
 
-  gtk_tree_selection_get_selected (sel, &model, &iter);
+  if (! gtk_tree_selection_get_selected (sel, &model, &iter))
+    return FALSE;
 
   gtk_tree_model_get_value (model, &iter, 1, &the_value);
 
@@ -307,6 +308,8 @@ get_selected_tuple (PsppireValLabsDialog *dialog,
       if (vl != NULL)
         *label = val_lab_get_escaped_label (vl);
     }
+  
+  return TRUE;
 }
 
 
@@ -369,7 +372,9 @@ on_remove (GtkWidget *w, gpointer data)
   union value value;
   struct val_lab *vl;
 
-  get_selected_tuple (dialog, &value, NULL);
+  if (! get_selected_tuple (dialog, &value, NULL))
+    return;
+  
   vl = val_labs_lookup (dialog->labs, &value);
   if (vl != NULL)
     val_labs_remove (dialog->labs, vl);
@@ -394,7 +399,9 @@ on_select_row (GtkTreeView *treeview, gpointer data)
 
   gchar *text;
 
-  get_selected_tuple (dialog, &value, &label);
+  if (! get_selected_tuple (dialog, &value, &label))
+    return;
+  
   text = value_to_text__ (value, &dialog->format, dialog->encoding);
 
   g_signal_handler_block (GTK_ENTRY (dialog->value_entry),