Fix crash when double clicking on variable sheet cells when no variable is defined.
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 28 Aug 2021 07:02:14 +0000 (09:02 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 28 Aug 2021 07:02:14 +0000 (09:02 +0200)
Reported-by: Maruthi Pathapati
src/ui/gui/psppire-variable-sheet.c

index b0fcbfca909b52375f0757711a2154dfba6bdbd3..859803f6122a10a445cdf6f74e20f27e6497b968 100644 (file)
@@ -48,6 +48,9 @@ set_var_type (PsppireVariableSheet *sheet)
   struct variable *var =
     psppire_dict_get_variable (PSPPIRE_DICT (dict), row);
 
+  if (var == NULL)
+    return;
+
   const struct fmt_spec *format = var_get_write_format (var);
   struct fmt_spec fmt = *format;
   GtkWindow *win = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (sheet)));
@@ -69,6 +72,9 @@ set_missing_values (PsppireVariableSheet *sheet)
   struct variable *var =
     psppire_dict_get_variable (PSPPIRE_DICT (dict), row);
 
+  if (var == NULL)
+    return;
+
   struct missing_values mv;
   if (GTK_RESPONSE_OK ==
       psppire_missing_val_dialog_run (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (sheet))),
@@ -92,6 +98,9 @@ set_value_labels (PsppireVariableSheet *sheet)
   struct variable *var =
     psppire_dict_get_variable (PSPPIRE_DICT (dict), row);
 
+  if (var == NULL)
+    return;
+
   struct val_labs *vls =
     psppire_val_labs_dialog_run (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (sheet))), var);
 
@@ -326,6 +335,8 @@ change_var_property (PsppireVariableSheet *var_sheet, gint col, gint row, const
   if (NULL == var)
     var = psppire_dict_insert_variable (dict, row, NULL);
 
+  g_return_if_fail (var);
+
   switch (col)
     {
     case DICT_TVM_COL_NAME: