aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Meier <wmeier@newsguy.com>2009-05-19 15:53:26 +0000
committerBill Meier <wmeier@newsguy.com>2009-05-19 15:53:26 +0000
commit79e537af335c1e3781ca23bb910fc11a30f36bcc (patch)
tree28df3fbe83e4bcd84d6595437f957dc2f84c19a2
parent1d54e7ad5670c470cd867ecf4903cecde860c321 (diff)
expert_comp: Fix some memory leaks (several non-trivial);
Fix hack wherein a ptr was stored using the address of an int (could cause Win64 crash ?) Use consistent indentation; svn path=/trunk/; revision=28410
-rw-r--r--gtk/expert_comp_table.c64
1 files changed, 42 insertions, 22 deletions
diff --git a/gtk/expert_comp_table.c b/gtk/expert_comp_table.c
index 1e7f583541..da33f53bc0 100644
--- a/gtk/expert_comp_table.c
+++ b/gtk/expert_comp_table.c
@@ -57,9 +57,9 @@
static gint
sort_iter_compare_func (GtkTreeModel *model,
-GtkTreeIter *a,
-GtkTreeIter *b,
-gpointer userdata)
+ GtkTreeIter *a,
+ GtkTreeIter *b,
+ gpointer userdata)
{
gint sortcol = GPOINTER_TO_INT(userdata);
gint ret = 0;
@@ -82,8 +82,8 @@ gpointer userdata)
}
g_free(name1);
g_free(name2);
- }
- break;
+ }
+ break;
default:
g_return_val_if_reached(0);
}
@@ -126,7 +126,8 @@ error_select_filter_cb(GtkWidget *widget _U_, gpointer callback_data, guint call
GtkTreeIter iter;
GtkTreeModel *model;
- const expert_info_t expert_data;
+ expert_info_t expert_data;
+ gchar *grp;
action=FILTER_ACTION(callback_action);
type=FILTER_ACTYPE(callback_action);
@@ -134,17 +135,31 @@ error_select_filter_cb(GtkWidget *widget _U_, gpointer callback_data, guint call
gtk_tree_selection_get_selected(err->select, &model, &iter);
- gtk_tree_model_get (model, &iter, GROUP_COLUMN, &expert_data.group, -1);
- gtk_tree_model_get (model, &iter, PROTOCOL_COLUMN, &expert_data.protocol, -1);
- gtk_tree_model_get (model, &iter, SUMMARY_COLUMN, &expert_data.summary, -1);
+ gtk_tree_model_get (model, &iter,
+ GROUP_COLUMN, &grp,
+ PROTOCOL_COLUMN, &expert_data.protocol,
+ SUMMARY_COLUMN, &expert_data.summary,
+ -1);
- if (strcmp((char *)(unsigned long)expert_data.group, "Packet:")==0) {
+ if (strcmp(grp, "Packet:")==0) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "You cannot filter or search for packet number. Click on a valid item header.");
+ g_free(grp);
+ g_free(expert_data.protocol);
+ g_free(expert_data.summary);
return;
}
+ g_free(grp);
+
+ /* XXX: find_summary_data doesn't (currently) reference expert_data.group. */
+ /* If "group" is required, then the message from GROUP_COLUMN will need */
+ /* to be translated to the group number (or the actual group number */
+ /* will also need to be stored in the TreeModel). */
selection = find_summary_data(err, &expert_data);
+ g_free(expert_data.protocol);
+ g_free(expert_data.summary);
+
if(selection>=(int)err->num_procs){
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "No items are selected");
return;
@@ -386,8 +401,10 @@ expert_goto_pkt_cb (GtkTreeSelection *selection, gpointer data _U_)
if (gtk_tree_selection_get_selected (selection, &model, &iter))
{
- gtk_tree_model_get (model, &iter, PROTOCOL_COLUMN, &pkt, -1);
- gtk_tree_model_get (model, &iter, GROUP_COLUMN, &grp, -1);
+ gtk_tree_model_get (model, &iter,
+ PROTOCOL_COLUMN, &pkt,
+ GROUP_COLUMN, &grp,
+ -1);
if (strcmp(grp, "Packet:")==0) {
cf_goto_frame(&cfile, atoi(pkt));
@@ -446,7 +463,7 @@ init_error_table(error_equiv_table *err, guint16 num_procs, GtkWidget *vbox)
/* The view now holds a reference. We can get rid of our own reference */
g_object_unref (G_OBJECT (store));
- /* Create a cell render */
+ /* Create a cell renderer */
renderer = gtk_cell_renderer_text_new ();
/* Create the first column, associating the "text" attribute of the
@@ -534,10 +551,12 @@ init_error_table_row(error_equiv_table *err, const expert_info_t *expert_data)
store = GTK_TREE_STORE(gtk_tree_view_get_model(err->tree_view)); /* Get store */
gtk_tree_store_append (store, &err->procedures[row].iter, NULL); /* Acquire an iterator */
+ /* (Note: gtk_tree_store_set *copies* the input strings) */
gtk_tree_store_set (store, &err->procedures[row].iter,
- GROUP_COLUMN, (char *)g_strdup(val_to_str(expert_data->group, expert_group_vals,"Unknown group (%u)")),
- PROTOCOL_COLUMN, (char *)g_strdup(expert_data->protocol),
- SUMMARY_COLUMN, (char *)g_strdup(expert_data->summary), -1);
+ GROUP_COLUMN, val_to_str(expert_data->group, expert_group_vals,"Unknown group (%u)"),
+ PROTOCOL_COLUMN, expert_data->protocol,
+ SUMMARY_COLUMN, expert_data->summary,
+ -1);
/* If an expert item was passed then build the filter string */
if (expert_data->pitem) {
@@ -569,8 +588,9 @@ add_error_table_data(error_equiv_table *err, const expert_info_t *expert_data)
gint index;
GtkTreeStore *store;
GtkTreeIter new_iter;
+ gchar str[16];
- index = find_summary_data(err,expert_data);
+ index = find_summary_data(err, expert_data);
/* We should never encounter a condition where we cannot find the expert data. If
* we do then we will just abort.
@@ -583,13 +603,13 @@ add_error_table_data(error_equiv_table *err, const expert_info_t *expert_data)
store = GTK_TREE_STORE(gtk_tree_view_get_model(err->tree_view));
+ g_snprintf(str, sizeof(str), "%d", expert_data->packet_num);
gtk_tree_store_append(store, &new_iter, &errp->iter);
-
gtk_tree_store_set(store, &new_iter,
- GROUP_COLUMN, "Packet:",
- PROTOCOL_COLUMN, (char *)g_strdup_printf("%d", expert_data->packet_num),
- COUNT_COLUMN, 1,
- -1);
+ GROUP_COLUMN, "Packet:",
+ PROTOCOL_COLUMN, str,
+ COUNT_COLUMN, 1,
+ -1);
}
void