diff options
Diffstat (limited to 'epan/dissectors/asn1/acse/packet-acse-template.c')
-rw-r--r-- | epan/dissectors/asn1/acse/packet-acse-template.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/epan/dissectors/asn1/acse/packet-acse-template.c b/epan/dissectors/asn1/acse/packet-acse-template.c index f783b87061..02adb4e98e 100644 --- a/epan/dissectors/asn1/acse/packet-acse-template.c +++ b/epan/dissectors/asn1/acse/packet-acse-template.c @@ -90,7 +90,7 @@ typedef struct _acse_ctx_oid_t { guint32 ctx_id; char *oid; } acse_ctx_oid_t; -static GHashTable *acse_ctx_oid_table = NULL; +static wmem_map_t *acse_ctx_oid_table = NULL; static guint acse_ctx_oid_hash(gconstpointer k) @@ -108,18 +108,6 @@ acse_ctx_oid_equal(gconstpointer k1, gconstpointer k2) } static void -acse_init(void) -{ - if (acse_ctx_oid_table) { - g_hash_table_destroy(acse_ctx_oid_table); - acse_ctx_oid_table = NULL; - } - acse_ctx_oid_table = g_hash_table_new(acse_ctx_oid_hash, - acse_ctx_oid_equal); - -} - -static void register_ctx_id_and_oid(packet_info *pinfo _U_, guint32 idx, char *oid) { acse_ctx_oid_t *aco, *tmpaco; @@ -128,18 +116,18 @@ register_ctx_id_and_oid(packet_info *pinfo _U_, guint32 idx, char *oid) aco->oid=wmem_strdup(wmem_file_scope(), oid); /* if this ctx already exists, remove the old one first */ - tmpaco=(acse_ctx_oid_t *)g_hash_table_lookup(acse_ctx_oid_table, aco); + tmpaco=(acse_ctx_oid_t *)wmem_map_lookup(acse_ctx_oid_table, aco); if (tmpaco) { - g_hash_table_remove(acse_ctx_oid_table, tmpaco); + wmem_map_remove(acse_ctx_oid_table, tmpaco); } - g_hash_table_insert(acse_ctx_oid_table, aco, aco); + wmem_map_insert(acse_ctx_oid_table, aco, aco); } static char * find_oid_by_ctx_id(packet_info *pinfo _U_, guint32 idx) { acse_ctx_oid_t aco, *tmpaco; aco.ctx_id=idx; - tmpaco=(acse_ctx_oid_t *)g_hash_table_lookup(acse_ctx_oid_table, &aco); + tmpaco=(acse_ctx_oid_t *)wmem_map_lookup(acse_ctx_oid_table, &aco); if (tmpaco) { return tmpaco->oid; } @@ -294,6 +282,11 @@ void proto_register_acse(void) { proto_register_subtree_array(ett, array_length(ett)); expert_acse = expert_register_protocol(proto_acse); expert_register_field_array(expert_acse, ei, array_length(ei)); + +#if NOT_NEEDED + acse_ctx_oid_table = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), acse_ctx_oid_hash, + acse_ctx_oid_equal); +#endif } |