Plug some memory leaks
[pspp] / src / ui / gui / psppire-var-sheet.c
index 930c27797ff8c0b2d5ec0da37567d7e5e1bc0c38..222694dcec84d9f19d6f73f20fedc45446fb2cfb 100644 (file)
@@ -391,6 +391,7 @@ render_var_cell (PsppSheetViewColumn *tree_column,
           free (vstr);
 
           g_object_set (cell, "text", text, NULL);
+          free (text);
           free (labels);
         }
       break;
@@ -735,6 +736,7 @@ on_query_var_tooltip (GtkWidget *widget, gint wx, gint wy,
 
           gtk_tooltip_set_text (tooltip, ds_cstr (&s));
           ds_destroy (&s);
+          free (labels);
 
           return TRUE;
         }
@@ -1266,6 +1268,20 @@ refresh_model (PsppireVarSheet *var_sheet)
     }
 }
 
+static void
+on_var_changed (PsppireDict *dict, glong row, PsppireVarSheet *var_sheet)
+{
+  PsppireEmptyListStore *store;
+
+  g_return_if_fail (dict == var_sheet->dict);
+
+  store = PSPPIRE_EMPTY_LIST_STORE (pspp_sheet_view_get_model (
+                                      PSPP_SHEET_VIEW (var_sheet)));
+  g_return_if_fail (store != NULL);
+
+  psppire_empty_list_store_row_changed (store, row);
+}
+
 static void
 on_var_inserted (PsppireDict *dict, glong row, PsppireVarSheet *var_sheet)
 {
@@ -1341,6 +1357,10 @@ psppire_var_sheet_set_dictionary (PsppireVarSheet *var_sheet,
         = g_signal_connect (dict, "backend-changed",
                             G_CALLBACK (on_backend_changed), var_sheet);
 
+      var_sheet->dict_signals[PSPPIRE_VAR_SHEET_VARIABLE_CHANGED]
+        = g_signal_connect (dict, "variable-changed",
+                            G_CALLBACK (on_var_changed), var_sheet);
+
       var_sheet->dict_signals[PSPPIRE_VAR_SHEET_VARIABLE_DELETED]
         = g_signal_connect (dict, "variable-inserted",
                             G_CALLBACK (on_var_inserted), var_sheet);