diff
--- a/tap-icmpstat.c.orig	Fri Apr  6 20:51:14 2012
+++ b/tap-icmpstat.c	Fri Apr 27 16:33:12 2012
@@ -124,5 +124,5 @@
     icmpstat_t *icmpstat = tapdata;
     const icmp_transaction_t *trans = data;
-    double *rt;
+    double resp_time, *rt;
 
     if (trans == NULL)
@@ -130,19 +130,20 @@
 
     if (trans->resp_frame) {
+        resp_time = nstime_to_msec(&trans->resp_time);
         rt = g_malloc(sizeof(double));
         if (rt == NULL)
             return 0;
-        *rt = trans->resp_time;
+        *rt = resp_time;
         icmpstat->rt_list = g_slist_insert_sorted(icmpstat->rt_list, rt, compare_doubles);
         icmpstat->num_resps++;
-        if (icmpstat->min_msecs > trans->resp_time) {
+        if (icmpstat->min_msecs > resp_time) {
             icmpstat->min_frame = trans->resp_frame;
-            icmpstat->min_msecs = trans->resp_time;
+            icmpstat->min_msecs = resp_time;
         }
-        if (icmpstat->max_msecs < trans->resp_time) {
+        if (icmpstat->max_msecs < resp_time) {
             icmpstat->max_frame = trans->resp_frame;
-            icmpstat->max_msecs = trans->resp_time;
+            icmpstat->max_msecs = resp_time;
         }
-        icmpstat->tot_msecs += trans->resp_time;
+        icmpstat->tot_msecs += resp_time;
     } else if (trans->rqst_frame)
         icmpstat->num_rqsts++;
diff
--- a/tap-icmpv6stat.c.orig	Fri Apr  6 20:51:14 2012
+++ b/tap-icmpv6stat.c	Fri Apr 27 16:33:10 2012
@@ -125,5 +125,5 @@
     icmpv6stat_t *icmpv6stat = tapdata;
     const icmp_transaction_t *trans = data;
-    double *rt;
+    double resp_time, *rt;
 
     if (trans == NULL)
@@ -131,19 +131,20 @@
 
     if (trans->resp_frame) {
+        resp_time = nstime_to_msec(&trans->resp_time);
         rt = g_malloc(sizeof(double));
         if (rt == NULL)
             return 0;
-        *rt = trans->resp_time;
+        *rt = resp_time;
         icmpv6stat->rt_list = g_slist_insert_sorted(icmpv6stat->rt_list, rt, compare_doubles);
         icmpv6stat->num_resps++;
-        if (icmpv6stat->min_msecs > trans->resp_time) {
+        if (icmpv6stat->min_msecs > resp_time) {
             icmpv6stat->min_frame = trans->resp_frame;
-            icmpv6stat->min_msecs = trans->resp_time;
+            icmpv6stat->min_msecs = resp_time;
         }
-        if (icmpv6stat->max_msecs < trans->resp_time) {
+        if (icmpv6stat->max_msecs < resp_time) {
             icmpv6stat->max_frame = trans->resp_frame;
-            icmpv6stat->max_msecs = trans->resp_time;
+            icmpv6stat->max_msecs = resp_time;
         }
-        icmpv6stat->tot_msecs += trans->resp_time;
+        icmpv6stat->tot_msecs += resp_time;
     } else if (trans->rqst_frame)
         icmpv6stat->num_rqsts++;
diff
--- a/epan/dissectors/packet-icmp.h.orig	Fri Apr  6 20:51:08 2012
+++ b/epan/dissectors/packet-icmp.h	Fri Apr 27 16:00:05 2012
@@ -31,5 +31,5 @@
     guint32 resp_frame;
     nstime_t rqst_time;
-    double resp_time;
+    nstime_t resp_time;
 } icmp_transaction_t;
 
diff
--- a/epan/dissectors/packet-icmp.c.orig	Fri Apr  6 20:51:08 2012
+++ b/epan/dissectors/packet-icmp.c	Fri Apr 27 16:19:20 2012
@@ -733,5 +733,5 @@
         icmp_trans->resp_frame = 0;
         icmp_trans->rqst_time = pinfo->fd->abs_ts;
-        icmp_trans->resp_time = 0.0;
+        nstime_set_zero(&icmp_trans->resp_time);
         se_tree_insert32_array(icmp_info->pdus, icmp_key, (void *)icmp_trans);
     }
@@ -764,4 +764,5 @@
     proto_item *it;
     nstime_t ns;
+    double resp_time;
 
     conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst,
@@ -794,7 +795,8 @@
 
         nstime_delta(&ns, &pinfo->fd->abs_ts, &icmp_trans->rqst_time);
-        icmp_trans->resp_time = nstime_to_msec(&ns);
+        icmp_trans->resp_time = ns;
+        resp_time = nstime_to_msec(&ns);
         it = proto_tree_add_double_format_value(tree, hf_icmp_resptime, NULL,
-            0, 0, icmp_trans->resp_time, "%.3f ms", icmp_trans->resp_time);
+            0, 0, resp_time, "%.3f ms", resp_time);
         PROTO_ITEM_SET_GENERATED(it);
     }
diff
--- a/epan/dissectors/packet-icmpv6.c.orig	Fri Apr  6 20:51:09 2012
+++ b/epan/dissectors/packet-icmpv6.c	Fri Apr 27 16:19:18 2012
@@ -1136,5 +1136,5 @@
         icmpv6_trans->resp_frame = 0;
         icmpv6_trans->rqst_time = pinfo->fd->abs_ts;
-        icmpv6_trans->resp_time = 0.0;
+        nstime_set_zero(&icmpv6_trans->resp_time);
         se_tree_insert32_array(icmpv6_info->pdus, icmpv6_key, (void *)icmpv6_trans);
     }
@@ -1167,4 +1167,5 @@
     proto_item *it;
     nstime_t ns;
+    double resp_time;
 
     conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst,
@@ -1200,9 +1201,10 @@
 
         nstime_delta(&ns, &pinfo->fd->abs_ts, &icmpv6_trans->rqst_time);
-        icmpv6_trans->resp_time = nstime_to_msec(&ns);
+        icmpv6_trans->resp_time = ns;
         if ( tree )
         {
+            resp_time = nstime_to_msec(&ns);
             it = proto_tree_add_double_format_value(tree, hf_icmpv6_resptime, NULL,
-                0, 0, icmpv6_trans->resp_time, "%.3f ms", icmpv6_trans->resp_time);
+                0, 0, resp_time, "%.3f ms", resp_time);
             PROTO_ITEM_SET_GENERATED(it);
         }
