From: Gunnar Beutner Date: Sat, 1 Aug 2015 02:35:50 +0000 (+0200) Subject: Fix: Operator + is inconsistent when used with empty and non-empty strings X-Git-Tag: v2.4.0~455 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=276f491762cdc3b311d6e955af35ab6d76576b2f;p=icinga2 Fix: Operator + is inconsistent when used with empty and non-empty strings fixes #9806 --- diff --git a/lib/base/value-operators.cpp b/lib/base/value-operators.cpp index f53bbda6a..46d50a5e2 100644 --- a/lib/base/value-operators.cpp +++ b/lib/base/value-operators.cpp @@ -228,9 +228,9 @@ Value icinga::operator+(const String& lhs, const Value& rhs) Value icinga::operator+(const Value& lhs, const Value& rhs) { - if ((lhs.IsEmpty() || lhs.IsNumber()) && (rhs.IsEmpty() || rhs.IsNumber()) && !(lhs.IsEmpty() && rhs.IsEmpty())) + if ((lhs.IsEmpty() || lhs.IsNumber()) && !lhs.IsString() && (rhs.IsEmpty() || rhs.IsNumber()) && !rhs.IsString() && !(lhs.IsEmpty() && rhs.IsEmpty())) return static_cast(lhs) + static_cast(rhs); - if ((lhs.IsString() || lhs.IsEmpty() || lhs.IsNumber()) && (rhs.IsString() || rhs.IsEmpty() || rhs.IsNumber()) && !(lhs.IsEmpty() && rhs.IsEmpty())) + if ((lhs.IsString() || lhs.IsEmpty() || lhs.IsNumber()) && (rhs.IsString() || rhs.IsEmpty() || rhs.IsNumber())) return static_cast(lhs) + static_cast(rhs); else if ((lhs.IsNumber() || lhs.IsEmpty()) && (rhs.IsNumber() || rhs.IsEmpty()) && !(lhs.IsEmpty() && rhs.IsEmpty())) return static_cast(lhs) + static_cast(rhs);