diff options
author | sake <sake@f5534014-38df-0310-8fa8-9805f1628bb7> | 2007-11-25 12:36:33 +0000 |
---|---|---|
committer | sake <sake@f5534014-38df-0310-8fa8-9805f1628bb7> | 2007-11-25 12:36:33 +0000 |
commit | f1bce0727068af70ad526692ee60bfb8aa23639a (patch) | |
tree | d372299131746243c612330967557a74f0568b4d | |
parent | 05bbeacee0a67d854ab0a988e11b23cb82849111 (diff) |
Fixes crashing when opening color filters and pressing OK
(introduced in SVN 23560)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@23582 f5534014-38df-0310-8fa8-9805f1628bb7
-rw-r--r-- | color_filters.c | 10 | ||||
-rw-r--r-- | color_filters.h | 5 | ||||
-rw-r--r-- | gtk/color_dlg.c | 10 |
3 files changed, 13 insertions, 12 deletions
diff --git a/color_filters.c b/color_filters.c index 18a02422c3..24dee0aab9 100644 --- a/color_filters.c +++ b/color_filters.c @@ -313,21 +313,23 @@ color_filter_validate_cb(gpointer filter_arg, gpointer unused _U_) /* apply changes from the edit list */ void -color_filters_apply(GSList *cfl) +color_filters_apply(GSList *tmp_cfl, GSList *edit_cfl) { /* "move" old entries to the deleted list * we must keep them until the dissection no longer needs them */ color_filter_deleted_list = g_slist_concat(color_filter_deleted_list, color_filter_list); color_filter_list = NULL; - /* clone all list entries from edit to normal list */ + /* clone all list entries from tmp/edit to normal list */ color_filter_valid_list = NULL; - color_filter_valid_list = color_filter_list_clone(cfl); + color_filter_valid_list = color_filter_list_clone(tmp_cfl); + color_filter_valid_list = g_slist_concat(color_filter_valid_list, + color_filter_list_clone(edit_cfl) ); /* compile all filter */ g_slist_foreach(color_filter_valid_list, color_filter_validate_cb, NULL); - /* clone all list entries from edit to normal list */ + /* clone all list entries from tmp/edit to normal list */ color_filter_list = color_filter_list_clone(color_filter_valid_list); /* compile all filter */ diff --git a/color_filters.h b/color_filters.h index e0851ac531..73522b07f4 100644 --- a/color_filters.h +++ b/color_filters.h @@ -125,9 +125,10 @@ void color_filter_add_cb (color_filter_t *colorf, gpointer user_data); /** Apply a changed filter list. * - * @param cfl the filter list to apply + * @param tmp_cfl the temporary color filter list to apply + * @param edit_cfl the edited permanent color filter list to apply */ -void color_filters_apply(GSList *cfl); +void color_filters_apply(GSList *tmp_cfl, GSList *edit_cfl); /** Save filters in users filter file. * diff --git a/gtk/color_dlg.c b/gtk/color_dlg.c index eb6a42a936..14e9511399 100644 --- a/gtk/color_dlg.c +++ b/gtk/color_dlg.c @@ -1303,8 +1303,6 @@ color_ok_cb(GtkButton *button _U_, gpointer user_data _U_) static void color_apply_cb(GtkButton *button _U_, gpointer user_data _U_) { - GSList *cfl; - /* if we don't have a Save button, just save the settings now */ if (!prefs.gui_use_pref_save) { if (!color_filters_write(color_filter_edit_list)) @@ -1312,10 +1310,10 @@ color_apply_cb(GtkButton *button _U_, gpointer user_data _U_) "Could not open filter file: %s", strerror(errno)); } - /* merge the temporary coloring filters with the ones that just - * have been edited and apply them both */ - cfl = g_slist_concat(color_filter_tmp_list, color_filter_edit_list); - color_filters_apply(cfl); + /* Apply the coloring rules, both the temporary ones in + * color_filter_tmp_list as the permanent ones in color_filter_edit_list + * */ + color_filters_apply(color_filter_tmp_list, color_filter_edit_list); /* colorize list */ cf_colorize_packets(&cfile); |