diff options
author | Bill Meier <wmeier@newsguy.com> | 2009-10-12 01:13:20 +0000 |
---|---|---|
committer | Bill Meier <wmeier@newsguy.com> | 2009-10-12 01:13:20 +0000 |
commit | 09393ee57ddd58017b5162059778bf16947e1f0d (patch) | |
tree | 80cdf7d9b9f38a1e49be7fab143938e4308192d5 /plugins | |
parent | f479b75ea3f5c88fa5c159de32b56211a0491680 (diff) | |
download | wireshark-09393ee57ddd58017b5162059778bf16947e1f0d.tar.gz wireshark-09393ee57ddd58017b5162059778bf16947e1f0d.tar.bz2 wireshark-09393ee57ddd58017b5162059778bf16947e1f0d.zip |
Replace GMemChunk usage with se_alloc();
Fixes memory leak for GLib > 2.8.
svn path=/trunk/; revision=30526
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/irda/packet-irda.c | 32 |
1 files changed, 5 insertions, 27 deletions
diff --git a/plugins/irda/packet-irda.c b/plugins/irda/packet-irda.c index a1962272e6..2bb4b12ee3 100644 --- a/plugins/irda/packet-irda.c +++ b/plugins/irda/packet-irda.c @@ -36,6 +36,7 @@ #include <glib.h> #include <epan/packet.h> #include <epan/conversation.h> +#include <epan/emem.h> #include <epan/xdlc.h> #include "irda-appl.h" @@ -266,9 +267,6 @@ typedef struct lmp_conversation { dissector_t proto_dissector; } lmp_conversation_t; -static GMemChunk* iap_conv_chunk = NULL; -static GMemChunk* lmp_conv_chunk = NULL; - static const true_false_string lap_cr_vals = { "Command", "Response" @@ -559,7 +557,7 @@ static void dissect_iap_request(tvbuff_t* tvb, packet_info* pinfo, proto_tree* r } if (iap_conv->pnext == NULL) { - iap_conv->pnext = g_mem_chunk_alloc(iap_conv_chunk); + iap_conv->pnext = se_alloc(sizeof(iap_conversation_t)); iap_conv = iap_conv->pnext; break; } @@ -569,7 +567,7 @@ static void dissect_iap_request(tvbuff_t* tvb, packet_info* pinfo, proto_tree* r else { conv = conversation_new(pinfo->fd->num, &srcaddr, &destaddr, PT_NONE, pinfo->srcport, pinfo->destport, 0); - iap_conv = g_mem_chunk_alloc(iap_conv_chunk); + iap_conv = se_alloc(sizeof(iap_conversation_t)); conversation_add_proto_data(conv, proto_iap, (void*)iap_conv); } @@ -1245,7 +1243,7 @@ void add_lmp_conversation(packet_info* pinfo, guint8 dlsap, gboolean ttp, dissec if (lmp_conv->pnext == NULL) { - lmp_conv->pnext = g_mem_chunk_alloc(lmp_conv_chunk); + lmp_conv->pnext = se_alloc(sizeof(lmp_conversation_t)); lmp_conv = lmp_conv->pnext; break; } @@ -1255,7 +1253,7 @@ void add_lmp_conversation(packet_info* pinfo, guint8 dlsap, gboolean ttp, dissec else { conv = conversation_new(pinfo->fd->num, &destaddr, &srcaddr, PT_NONE, dlsap, 0, NO_PORT_B); - lmp_conv = g_mem_chunk_alloc(lmp_conv_chunk); + lmp_conv = se_alloc(sizeof(lmp_conversation_t)); conversation_add_proto_data(conv, proto_irlmp, (void*)lmp_conv); } @@ -1912,23 +1910,6 @@ static void dissect_irda(tvbuff_t* tvb, packet_info* pinfo, proto_tree* root) /* - * Re-initialize the IrDA dissector - */ -static void init_irda(void) -{ - if (iap_conv_chunk) - g_mem_chunk_destroy(iap_conv_chunk); - if (lmp_conv_chunk) - g_mem_chunk_destroy(lmp_conv_chunk); - - iap_conv_chunk = g_mem_chunk_new("iap_conversation", sizeof(iap_conversation_t), - 10 * sizeof(iap_conversation_t), G_ALLOC_AND_FREE); - lmp_conv_chunk = g_mem_chunk_new("lmp_conversation", sizeof(lmp_conversation_t), - 10 * sizeof(lmp_conversation_t), G_ALLOC_AND_FREE); -} - - -/* * Register the protocol with Wireshark * This format is required because a script is used to build the C function * that calls all the protocol registrations. @@ -2253,9 +2234,6 @@ void proto_register_irda(void) gint* ett_iap_e[MAX_IAP_ENTRIES]; - /* Register re-init routine */ - register_init_routine(init_irda); - /* Register protocol names and descriptions */ proto_irlap = proto_register_protocol("IrDA Link Access Protocol", "IrLAP", "irlap"); proto_log = proto_register_protocol("Log Message", "Log", "log"); |