You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2013/09/10 18:45:22 UTC
[2/3] git commit: TS-2174: Fix StatBinaryEval() on div operation
TS-2174: Fix StatBinaryEval() on div operation
We should fore the type of result to be RecFloat on div operation,
otherwise we can't get the fraction when dividing two RecInt.
Signed-off-by: Yunkai Zhang <qi...@taobao.com>
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/3751008c
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/3751008c
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/3751008c
Branch: refs/heads/4.0.x
Commit: 3751008cb64a9b37227ff40659895dd322ac322a
Parents: e543f69
Author: Yunkai Zhang <qi...@taobao.com>
Authored: Wed Sep 4 00:57:07 2013 +0800
Committer: Leif Hedstrom <zw...@apache.org>
Committed: Tue Sep 10 10:37:37 2013 -0600
----------------------------------------------------------------------
mgmt/stats/StatType.cc | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/3751008c/mgmt/stats/StatType.cc
----------------------------------------------------------------------
diff --git a/mgmt/stats/StatType.cc b/mgmt/stats/StatType.cc
index 0017e5d..3e13d78 100644
--- a/mgmt/stats/StatType.cc
+++ b/mgmt/stats/StatType.cc
@@ -947,6 +947,22 @@ StatExprToken *StatObject::StatBinaryEval(StatExprToken * left, char op,
case '/':
RecData recTmp;
RecDataClear(RECD_NULL, &recTmp);
+
+ /*
+ * Force the type of result to be RecFloat on div operation
+ */
+ if (result->m_token_type != RECD_FLOAT && result->m_token_type != RECD_CONST) {
+ RecFloat t;
+
+ result->m_token_type = RECD_FLOAT;
+
+ t = (RecFloat)l.rec_int;
+ l.rec_float = t;
+
+ t = (RecFloat)r.rec_int;
+ r.rec_float = t;
+ }
+
if (RecDataCmp(result->m_token_type, r, recTmp)) {
result->m_token_value = RecDataDiv(result->m_token_type, l, r);
}