diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2019-06-19 17:15:26 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2019-06-19 17:15:39 -0700 |
commit | 0ef61500059e6ebed30b76140a78e6e9149b318e (patch) | |
tree | 5e6a69cb471a00de39b7d2d75b15d7f41f461399 /src/corelib | |
parent | eb144c3c4d23d0d9cb877887ca4243b888500979 (diff) |
QCborValue::fromJsonValue: rewrite code to remove UB
Converting an out-of-range FP to integer is UB. See comment in
qnumeric_p.h.
Change-Id: Ief874765cd7b43798de3fffd15a9bfe2c5fbbc01
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/serialization/qjsoncbor.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/corelib/serialization/qjsoncbor.cpp b/src/corelib/serialization/qjsoncbor.cpp index 4f756df97c..4603750d11 100644 --- a/src/corelib/serialization/qjsoncbor.cpp +++ b/src/corelib/serialization/qjsoncbor.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2018 Intel Corporation. +** Copyright (C) 2019 Intel Corporation. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -598,10 +598,12 @@ QCborValue QCborValue::fromJsonValue(const QJsonValue &v) switch (v.type()) { case QJsonValue::Bool: return v.b; - case QJsonValue::Double: - if (v.dbl == qint64(v.dbl)) - return qint64(v.dbl); + case QJsonValue::Double: { + qint64 i; + if (convertDoubleTo(v.dbl, &i)) + return i; return v.dbl; + } case QJsonValue::String: return v.toString(); case QJsonValue::Array: |