diff options
author | Richard Sharpe <realrichardsharpe@gmail.com> | 2015-02-16 07:48:57 -0800 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2015-02-16 18:52:24 +0000 |
commit | febc2e145359c8ebe2e0c1d5a02fa972c5e54d5d (patch) | |
tree | a84db1661022ea875bdd9a295168597d3a80567a /epan/dissectors/packet-rsvd.c | |
parent | 63317550297e8cea3ca7da7d21dea6c8ccc0396f (diff) |
Fix a portability problem raised by Guy Harris. My first implementation would
not work on 32-bit platforms because I assumed that pointers were 64-bit
items. I have now moved to a slightly different scheme suggested by Evan Huus.
Change-Id: I34f4dceea9952d5633603e71a8e8ae8f4b9154cc
Signed-of-by: Richard Sharpe <realrichardsharpe@gmail.com>
Reviewed-on: https://code.wireshark.org/review/7179
Petri-Dish: Richard Sharpe <realrichardsharpe@gmail.com>
Reviewed-by: Evan Huus <eapache@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Richard Sharpe <realrichardsharpe@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-rsvd.c')
-rw-r--r-- | epan/dissectors/packet-rsvd.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/epan/dissectors/packet-rsvd.c b/epan/dissectors/packet-rsvd.c index e7eb2ac27e..9d3fcaeac4 100644 --- a/epan/dissectors/packet-rsvd.c +++ b/epan/dissectors/packet-rsvd.c @@ -196,8 +196,8 @@ dissect_RSVD_TUNNEL_SCSI(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *pare if (!rsvd_conv_data) { rsvd_conv_data = wmem_new(wmem_file_scope(), rsvd_conv_data_t); rsvd_conv_data->tasks = wmem_map_new(wmem_file_scope(), - g_direct_hash, - g_direct_equal); + wmem_int64_hash, + g_int64_equal); rsvd_conv_data->itl = wmem_tree_new(wmem_file_scope()); rsvd_conv_data->conversation = conversation; conversation_add_proto_data(conversation, proto_rsvd, rsvd_conv_data); @@ -205,14 +205,17 @@ dissect_RSVD_TUNNEL_SCSI(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *pare rsvd_conv_data->task = NULL; if (!pinfo->fd->flags.visited) { + guint64 *key_copy = wmem_new(wmem_file_scope(), guint64); + + *key_copy = request_id; rsvd_conv_data->task = wmem_new(wmem_file_scope(), rsvd_task_data_t); rsvd_conv_data->task->request_frame=pinfo->fd->num; rsvd_conv_data->task->response_frame=0; rsvd_conv_data->task->itlq = NULL; - wmem_map_insert(rsvd_conv_data->tasks, (const void *)request_id, + wmem_map_insert(rsvd_conv_data->tasks, (const void *)key_copy, rsvd_conv_data->task); } else { - rsvd_conv_data->task = (rsvd_task_data_t *)wmem_map_lookup(rsvd_conv_data->tasks, (void *)request_id); + rsvd_conv_data->task = (rsvd_task_data_t *)wmem_map_lookup(rsvd_conv_data->tasks, (const void *)&request_id); } sub_tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, len, ett_svhdx_tunnel_scsi_request, &sub_item, "SVHDX_TUNNEL_SCSI_%s", (request ? "REQUEST" : "RESPONSE")); |