aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <rostedt@goodmis.org>2009-12-23 20:50:50 -0500
committerSteven Rostedt <rostedt@goodmis.org>2009-12-23 20:50:50 -0500
commit2d25338455979714efd8b4866c5cfd06e6a37fe0 (patch)
tree16f085025db4dc5dab308d7b23e647e8e619da76
parenta69580d4fc58b8a45b71f31995dded115f813db2 (diff)
kernelshark: More memory leak clean ups
Found some more memory leak cleanups with valgrind. Running this: G_SLICE=always-malloc G_DEBUG=gc-friendly valgrind --tool=memcheck \ --leak-check=full --leak-resolution=high --num-callers=20 kernelshark Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--kernel-shark.c11
-rw-r--r--trace-graph.c2
-rw-r--r--trace-view.c3
3 files changed, 11 insertions, 5 deletions
diff --git a/kernel-shark.c b/kernel-shark.c
index a860392..158b9ac 100644
--- a/kernel-shark.c
+++ b/kernel-shark.c
@@ -72,6 +72,13 @@ static void ks_graph_select(struct graph_info *ginfo, guint64 cursor)
72 trace_view_select(info->treeview, cursor); 72 trace_view_select(info->treeview, cursor);
73} 73}
74 74
75static void free_info(struct shark_info *info)
76{
77 tracecmd_close(info->handle);
78 free(info->ginfo);
79 free(info);
80}
81
75/* Callback for the clicked signal of the Exit button */ 82/* Callback for the clicked signal of the Exit button */
76static void 83static void
77exit_clicked (gpointer data) 84exit_clicked (gpointer data)
@@ -79,7 +86,7 @@ exit_clicked (gpointer data)
79 struct shark_info *info = data; 86 struct shark_info *info = data;
80 87
81 gtk_widget_destroy (info->window); /* the user data points to the main window */ 88 gtk_widget_destroy (info->window); /* the user data points to the main window */
82 tracecmd_close(info->handle); 89 free_info(info);
83 gtk_main_quit (); 90 gtk_main_quit ();
84} 91}
85 92
@@ -90,7 +97,7 @@ delete_event (GtkWidget *widget, GdkEvent *event, gpointer data)
90 struct shark_info *info = data; 97 struct shark_info *info = data;
91 98
92 gtk_widget_destroy (widget); /* destroy the main window */ 99 gtk_widget_destroy (widget); /* destroy the main window */
93 tracecmd_close(info->handle); 100 free_info(info);
94 gtk_main_quit (); 101 gtk_main_quit ();
95 return TRUE; 102 return TRUE;
96} 103}
diff --git a/trace-graph.c b/trace-graph.c
index da3162c..f7d98c1 100644
--- a/trace-graph.c
+++ b/trace-graph.c
@@ -1263,10 +1263,12 @@ trace_graph_create_with_callbacks(struct tracecmd_input *handle, GtkScrolledWind
1263 if (record->ts < ginfo->start_time) 1263 if (record->ts < ginfo->start_time)
1264 ginfo->start_time = record->ts; 1264 ginfo->start_time = record->ts;
1265 1265
1266 free_record(record);
1266 record = tracecmd_read_cpu_last(handle, cpu); 1267 record = tracecmd_read_cpu_last(handle, cpu);
1267 1268
1268 if (record->ts > ginfo->end_time) 1269 if (record->ts > ginfo->end_time)
1269 ginfo->end_time = record->ts; 1270 ginfo->end_time = record->ts;
1271 free_record(record);
1270 } 1272 }
1271 1273
1272 convert_nano(ginfo->start_time, &sec, &usec); 1274 convert_nano(ginfo->start_time, &sec, &usec);
diff --git a/trace-view.c b/trace-view.c
index 0b6affb..dadf35c 100644
--- a/trace-view.c
+++ b/trace-view.c
@@ -79,7 +79,6 @@ void
79trace_view_load(GtkWidget *view, struct tracecmd_input *handle, 79trace_view_load(GtkWidget *view, struct tracecmd_input *handle,
80 GtkWidget *spin) 80 GtkWidget *spin)
81{ 81{
82 GtkTreeViewColumn *col;
83 GtkCellRenderer *renderer; 82 GtkCellRenderer *renderer;
84 GtkCellRenderer *fix_renderer; 83 GtkCellRenderer *fix_renderer;
85 GtkTreeModel *model; 84 GtkTreeModel *model;
@@ -87,8 +86,6 @@ trace_view_load(GtkWidget *view, struct tracecmd_input *handle,
87 86
88 /* --- CPU column --- */ 87 /* --- CPU column --- */
89 88
90 col = gtk_tree_view_column_new();
91
92 renderer = gtk_cell_renderer_text_new(); 89 renderer = gtk_cell_renderer_text_new();
93 fix_renderer = gtk_cell_renderer_text_new(); 90 fix_renderer = gtk_cell_renderer_text_new();
94 91