From 91263b51f99a82fca7233e3dc8733a4a3d4b20ef Mon Sep 17 00:00:00 2001 From: Sathya Laufer Date: Tue, 10 Oct 2017 23:24:49 +0200 Subject: [PATCH 1/3] Applied Homegear pull request --- src/Variable.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Variable.h b/src/Variable.h index 9982695..ffd5fbe 100755 --- a/src/Variable.h +++ b/src/Variable.h @@ -93,10 +93,10 @@ class Variable Variable() { type = VariableType::tVoid; arrayValue = PArray(new Array()); structValue = PStruct(new Struct()); } Variable(Variable const& rhs); Variable(VariableType variableType) : Variable() { type = variableType; if(type == VariableType::tVariant) type = VariableType::tVoid; } - Variable(uint8_t integer) : Variable() { type = VariableType::tInteger; integerValue = (int32_t)integer; } - Variable(int32_t integer) : Variable() { type = VariableType::tInteger; integerValue = integer; integerValue64 = integer; } - Variable(uint32_t integer) : Variable() { type = VariableType::tInteger; integerValue = (int32_t)integer; integerValue64 = integer; } - Variable(int64_t integer) : Variable() { type = VariableType::tInteger64; integerValue = (int32_t)integer; integerValue64 = integer; } + Variable(uint8_t integer) : Variable() { type = VariableType::tInteger; integerValue = (int32_t)integer; integerValue64 = (int64_t)integer; } + Variable(int32_t integer) : Variable() { type = VariableType::tInteger; integerValue = (int32_t)integer; integerValue64 = (int64_t)integer; } + Variable(uint32_t integer) : Variable() { type = VariableType::tInteger; integerValue = (int32_t)integer; integerValue64 = (int64_t)integer; } + Variable(int64_t integer) : Variable() { type = VariableType::tInteger64; integerValue = (int32_t)integer; integerValue64 = (int64_t)integer; } Variable(uint64_t integer) : Variable() { type = VariableType::tInteger64; integerValue = (int32_t)integer; integerValue64 = (int64_t)integer; } Variable(std::string string) : Variable() { type = VariableType::tString; stringValue = string; } Variable(const char* string) : Variable() { type = VariableType::tString; stringValue = std::string(string); } From 2cb07da3ee006a6899d9b423cfc854a1dbd7a15f Mon Sep 17 00:00:00 2001 From: Sathya Laufer Date: Thu, 12 Oct 2017 16:49:39 +0200 Subject: [PATCH 2/3] Applied Homegear pull request --- src/JsonDecoder.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/JsonDecoder.cpp b/src/JsonDecoder.cpp index dc132d0..404d031 100644 --- a/src/JsonDecoder.cpp +++ b/src/JsonDecoder.cpp @@ -718,23 +718,19 @@ void JsonDecoder::decodeNumber(const std::string& json, uint32_t& pos, PVariable else if(exponent > 308) exponent = 308; value->floatValue = (exponent >= 0) ? value->floatValue * Math::Pow10(exponent) : value->floatValue / Math::Pow10(-exponent); if(minus) value->floatValue *= -1; - value->integerValue = std::lround(value->floatValue); value->integerValue64 = std::llround(value->floatValue); + value->integerValue = std::lround(value->floatValue); } else { if(value->type == VariableType::tInteger && (number > 2147483647 || number < -2147483648)) { value->type = VariableType::tInteger64; - value->integerValue64 = minus ? -number : number; - value->floatValue = value->integerValue64; - } - else - { - value->integerValue = minus ? -number : number; - value->integerValue64 = value->integerValue; - value->floatValue = value->integerValue; } + + value->integerValue64 = minus ? -number : number; + value->integerValue = value->integerValue64; + value->floatValue = value->integerValue64; } } @@ -847,12 +843,19 @@ void JsonDecoder::decodeNumber(const std::vector& json, uint32_t& pos, PVa else if(exponent > 308) exponent = 308; value->floatValue = (exponent >= 0) ? value->floatValue * Math::Pow10(exponent) : value->floatValue / Math::Pow10(-exponent); if(minus) value->floatValue *= -1; + value->integerValue64 = std::llround(value->floatValue); value->integerValue = std::lround(value->floatValue); } else { - value->integerValue = minus ? -number : number; - value->floatValue = value->integerValue; + if(value->type == VariableType::tInteger && (number > 2147483647 || number < -2147483648)) + { + value->type = VariableType::tInteger64; + } + + value->integerValue64 = minus ? -number : number; + value->integerValue = value->integerValue64; + value->floatValue = value->integerValue64; } } From a168cf67204eabc2e82241a0bd396de53d160510 Mon Sep 17 00:00:00 2001 From: Sathya Laufer Date: Thu, 19 Oct 2017 12:38:19 +0200 Subject: [PATCH 3/3] Revision --- revision.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/revision.txt b/revision.txt index 60d3b2f..b6a7d89 100644 --- a/revision.txt +++ b/revision.txt @@ -1 +1 @@ -15 +16