aboutsummaryrefslogtreecommitdiffstats
path: root/ui/io_graph_item.h
diff options
context:
space:
mode:
authorAlexander Meier <MeierAPunkt@googlemail.com>2019-12-22 10:40:59 +0100
committerAnders Broman <a.broman58@gmail.com>2020-01-18 12:17:24 +0000
commit0f57ad35c8c2a04d652d0a7e7db77a07f493d0b1 (patch)
tree550715ffe0904fb9d0f2e4b806af6f9c711847b6 /ui/io_graph_item.h
parent30baaab46071e1d6d874be9507730b61be356e4e (diff)
IO Graph shows unsigned values correctly
IO Graph used to show unsigned integer values not correctly when using SUM, MAX, MIN or LOAD. For example was the uint32 0x9b37d2b8 shown as about -1_679_000_000 while it should be shown as 2_604_126_904. This patch fixes the incorrect type conversions so that unsigned integer are shown properly in IO Graph. Change-Id: Ib361e63cce9e088bfdd4b3d3186725c67d33f1bd Reviewed-on: https://code.wireshark.org/review/35550 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'ui/io_graph_item.h')
-rw-r--r--ui/io_graph_item.h50
1 files changed, 31 insertions, 19 deletions
diff --git a/ui/io_graph_item.h b/ui/io_graph_item.h
index a33102a3b6..396c16687d 100644
--- a/ui/io_graph_item.h
+++ b/ui/io_graph_item.h
@@ -162,8 +162,8 @@ update_io_graph_item(io_graph_item_t *items, int idx, packet_info *pinfo, epan_d
/* Update the appropriate counters. If fields == 0, this is the first seen
* value so set any min/max values accordingly. */
for (i=0; i < gp->len; i++) {
- int new_int;
gint64 new_int64;
+ guint64 new_uint64;
float new_float;
double new_double;
nstime_t *new_time;
@@ -173,61 +173,70 @@ update_io_graph_item(io_graph_item_t *items, int idx, packet_info *pinfo, epan_d
case FT_UINT16:
case FT_UINT24:
case FT_UINT32:
- new_int = fvalue_get_uinteger(&((field_info *)gp->pdata[i])->value);
+ new_uint64 = fvalue_get_uinteger(&((field_info *)gp->pdata[i])->value);
- if ((new_int > item->int_max) || (item->fields == 0)) {
- item->int_max = new_int;
+ if ((new_uint64 > (guint64)item->int_max) || (item->fields == 0)) {
+ item->int_max = new_uint64;
+ item->double_max = (gdouble)new_uint64;
if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
item->extreme_frame_in_invl = pinfo->num;
}
}
- if ((new_int < item->int_min) || (item->fields == 0)) {
- item->int_min = new_int;
+ if ((new_uint64 < (guint64)item->int_min) || (item->fields == 0)) {
+ item->int_min = new_uint64;
+ item->double_min = (gdouble)new_uint64;
if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
item->extreme_frame_in_invl = pinfo->num;
}
}
- item->int_tot += new_int;
+ item->int_tot += new_uint64;
+ item->double_tot += (gdouble)new_uint64;
item->fields++;
break;
case FT_INT8:
case FT_INT16:
case FT_INT24:
case FT_INT32:
- new_int = fvalue_get_sinteger(&((field_info *)gp->pdata[i])->value);
- if ((new_int > item->int_max) || (item->fields == 0)) {
- item->int_max = new_int;
+ new_int64 = fvalue_get_sinteger(&((field_info *)gp->pdata[i])->value);
+ if ((new_int64 > item->int_max) || (item->fields == 0)) {
+ item->int_max = new_int64;
+ item->double_max = (gdouble)new_int64;
if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
item->extreme_frame_in_invl = pinfo->num;
}
}
- if ((new_int < item->int_min) || (item->fields == 0)) {
- item->int_min = new_int;
+ if ((new_int64 < item->int_min) || (item->fields == 0)) {
+ item->int_min = new_int64;
+ item->double_min = (gdouble)new_int64;
if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
item->extreme_frame_in_invl = pinfo->num;
}
}
- item->int_tot += new_int;
+ item->int_tot += new_int64;
+ item->double_tot += (gdouble)new_int64;
item->fields++;
break;
case FT_UINT40:
case FT_UINT48:
case FT_UINT56:
case FT_UINT64:
- new_int64 = fvalue_get_uinteger64(&((field_info *)gp->pdata[i])->value);
- if ((new_int64 > item->int_max) || (item->fields == 0)) {
- item->int_max = new_int64;
+ new_uint64 = fvalue_get_uinteger64(&((field_info *)gp->pdata[i])->value);
+ if ((new_uint64 > (guint64)item->int_max) || (item->fields == 0)) {
+ item->int_max = new_uint64;
+ item->double_max = (gdouble)new_uint64;
if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
item->extreme_frame_in_invl = pinfo->num;
}
}
- if ((new_int64 < item->int_min) || (item->fields == 0)) {
- item->int_min = new_int64;
+ if ((new_uint64 < (guint64)item->int_min) || (item->fields == 0)) {
+ item->int_min = new_uint64;
+ item->double_min = (gdouble)new_uint64;
if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
item->extreme_frame_in_invl = pinfo->num;
}
}
- item->int_tot += new_int64;
+ item->int_tot += new_uint64;
+ item->double_tot += (gdouble)new_uint64;
item->fields++;
break;
case FT_INT40:
@@ -237,17 +246,20 @@ update_io_graph_item(io_graph_item_t *items, int idx, packet_info *pinfo, epan_d
new_int64 = fvalue_get_sinteger64(&((field_info *)gp->pdata[i])->value);
if ((new_int64 > item->int_max) || (item->fields == 0)) {
item->int_max = new_int64;
+ item->double_max = (gdouble)new_int64;
if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
item->extreme_frame_in_invl = pinfo->num;
}
}
if ((new_int64 < item->int_min) || (item->fields == 0)) {
item->int_min = new_int64;
+ item->double_min = (gdouble)new_int64;
if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
item->extreme_frame_in_invl = pinfo->num;
}
}
item->int_tot += new_int64;
+ item->double_tot += (gdouble)new_int64;
item->fields++;
break;
case FT_FLOAT: