Lua: Support deregister ProtoField with existing abbrev
Change-Id: Icb06792bb2662dcee6e5495359ceef420a5b4498 Reviewed-on: https://code.wireshark.org/review/10212 Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
This commit is contained in:
parent
984f87aba7
commit
216f06b299
25
epan/proto.c
25
epan/proto.c
|
@ -4362,6 +4362,29 @@ hfinfo_same_name_get_prev(const header_field_info *hfinfo)
|
|||
return dup_hfinfo;
|
||||
}
|
||||
|
||||
static void
|
||||
hfinfo_remove_fram_gpa_name_map(const header_field_info *hfinfo)
|
||||
{
|
||||
if (!hfinfo->same_name_next && hfinfo->same_name_prev_id == -1) {
|
||||
/* No hfinfo with the same name */
|
||||
g_hash_table_steal(gpa_name_map, hfinfo->abbrev);
|
||||
return;
|
||||
}
|
||||
|
||||
if (hfinfo->same_name_next) {
|
||||
hfinfo->same_name_next->same_name_prev_id = hfinfo->same_name_prev_id;
|
||||
}
|
||||
|
||||
if (hfinfo->same_name_prev_id != -1) {
|
||||
header_field_info *same_name_prev = hfinfo_same_name_get_prev(hfinfo);
|
||||
same_name_prev->same_name_next = hfinfo->same_name_next;
|
||||
if (!hfinfo->same_name_next) {
|
||||
/* It's always the latest added hfinfo which is stored in gpa_name_map */
|
||||
g_hash_table_insert(gpa_name_map, (gpointer) (same_name_prev->abbrev), same_name_prev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------- */
|
||||
const gchar *
|
||||
proto_custom_set(proto_tree* tree, GSList *field_ids, gint occurrence,
|
||||
|
@ -5266,7 +5289,7 @@ proto_deregister_protocol(const char *short_name)
|
|||
|
||||
for (i = 0; i < protocol->fields->len; i++) {
|
||||
hfinfo = (header_field_info *)g_ptr_array_index(protocol->fields, i);
|
||||
g_hash_table_steal(gpa_name_map, hfinfo->abbrev);
|
||||
hfinfo_remove_fram_gpa_name_map(hfinfo);
|
||||
g_ptr_array_add(deregistered_fields, gpa_hfinfo.hfi[hfinfo->id]);
|
||||
}
|
||||
g_ptr_array_free(protocol->fields, TRUE);
|
||||
|
|
Loading…
Reference in New Issue