From 628a46d8fd1a6133cf8aea841083d4d9c03be481 Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Wed, 6 Mar 2019 15:30:58 -0800 Subject: [PATCH] GH-219: revert previous change to |x| operator for interval/time The result of the |x| operator for interval and time types historically returned a value of type double. This was changed as part of 3256ac7c4914be7dbec07535faef69b99201b90b to return interval/time, but this now reverts to returning a double again to avoid introducing a change that may break user code. Fixes GH-219 --- CHANGES | 4 ++++ VERSION | 2 +- src/Expr.cc | 2 +- src/Val.cc | 2 +- testing/btest/language/interval.bro | 6 +++--- testing/btest/language/time.bro | 2 +- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CHANGES b/CHANGES index e1f0882198..e0d13d1335 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,8 @@ +2.6-132 | 2019-03-06 15:30:58 -0800 + + * GH-219: revert a breaking change to |x| operator for interval/time (Jon Siwek, Corelight) + 2.6-130 | 2019-02-22 14:56:41 -0600 * Make input framework parse whitespace around various data types. (Johanna Amann, Corelight) diff --git a/VERSION b/VERSION index fadaf6e549..2ce4bd41ab 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.6-130 +2.6-132 diff --git a/src/Expr.cc b/src/Expr.cc index be186524ad..b51516d66b 100644 --- a/src/Expr.cc +++ b/src/Expr.cc @@ -1382,7 +1382,7 @@ SizeExpr::SizeExpr(Expr* arg_op) : UnaryExpr(EXPR_SIZE, arg_op) return; if ( op->Type()->InternalType() == TYPE_INTERNAL_DOUBLE ) - SetType(op->Type()->Ref()); + SetType(base_type(TYPE_DOUBLE)); else SetType(base_type(TYPE_COUNT)); } diff --git a/src/Val.cc b/src/Val.cc index a96d2b098e..b55a9090d3 100644 --- a/src/Val.cc +++ b/src/Val.cc @@ -425,7 +425,7 @@ Val* Val::SizeVal() const return val_mgr->GetCount(val.uint_val); case TYPE_INTERNAL_DOUBLE: - return new Val(fabs(val.double_val), type->Tag()); + return new Val(fabs(val.double_val), TYPE_DOUBLE); case TYPE_INTERNAL_OTHER: if ( type->Tag() == TYPE_FUNC ) diff --git a/testing/btest/language/interval.bro b/testing/btest/language/interval.bro index c567d0af02..0bb912c4d9 100644 --- a/testing/btest/language/interval.bro +++ b/testing/btest/language/interval.bro @@ -70,9 +70,9 @@ event bro_init() test_case( "compare different time units", in13 >= in35 ); test_case( "add different time units", in13 + in14 == 4min ); test_case( "subtract different time units", in24 - in23 == 0sec ); - test_case( "absolute value", |in25| == 2hr ); - test_case( "absolute value", |in36| == 2.5day ); - test_case( "absolute value", |5sec - 9sec| == 4sec ); + test_case( "absolute value", |in25| == 2.0*3600 ); + test_case( "absolute value", |in36| == 2.5*86400 ); + test_case( "absolute value", |5sec - 9sec| == 4.0 ); in34 += 2hr; test_case( "assignment operator", in34 == 122min ); in34 -= 2hr; diff --git a/testing/btest/language/time.bro b/testing/btest/language/time.bro index 3310c3a3f7..dd4b6336fe 100644 --- a/testing/btest/language/time.bro +++ b/testing/btest/language/time.bro @@ -27,7 +27,7 @@ event bro_init() test_case( "inequality", t1 != t3 ); test_case( "equality", t1 == t4 ); test_case( "subtract time", t2 - t1 == 3sec); - test_case( "size operator", |t5| == t5 ); + test_case( "size operator", |t5| == 1234567890.0 ); }