diff --git a/sdrbase/util/simpleserializer.cpp b/sdrbase/util/simpleserializer.cpp index 822e74382..0ced52faa 100644 --- a/sdrbase/util/simpleserializer.cpp +++ b/sdrbase/util/simpleserializer.cpp @@ -392,7 +392,7 @@ returnDefault: bool SimpleDeserializer::readS64(quint32 id, qint64* result, qint64 def) const { uint readOfs; - qint64 tmp; + quint64 tmp; Elements::const_iterator it = m_elements.constFind(id); if(it == m_elements.constEnd()) goto returnDefault; @@ -406,10 +406,10 @@ bool SimpleDeserializer::readS64(quint32 id, qint64* result, qint64 def) const for(uint i = 0; i < it->length; i++) { quint8 byte = readByte(&readOfs); if((i == 0) && (byte & 0x80)) - tmp = -1; + tmp = 0xFFFFFFFFFFFFFFFFULL; tmp = (tmp << 8) | byte; } - *result = tmp; + *result = static_cast(tmp); return true; returnDefault: