mirror of
https://github.com/eledio-devices/thirdparty-ArduinoJson.git
synced 2025-11-01 08:48:30 +01:00
asFloat() ignores pointers (6808,5626)
This commit is contained in:
@@ -103,7 +103,9 @@ struct Converter<T, typename enable_if<is_floating_point<T>::value>::type> {
|
|||||||
|
|
||||||
static T fromJson(VariantConstRef src) {
|
static T fromJson(VariantConstRef src) {
|
||||||
const VariantData* data = getData(src);
|
const VariantData* data = getData(src);
|
||||||
return data ? data->asFloat<T>() : false;
|
if (!data)
|
||||||
|
return 0;
|
||||||
|
return data->resolve()->asFloat<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool checkJson(VariantConstRef src) {
|
static bool checkJson(VariantConstRef src) {
|
||||||
|
|||||||
@@ -87,6 +87,12 @@ class VariantData {
|
|||||||
|
|
||||||
bool asBoolean() const;
|
bool asBoolean() const;
|
||||||
|
|
||||||
|
const VariantData *resolve() const {
|
||||||
|
if (isPointer())
|
||||||
|
return _content.asPointer->resolve();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
CollectionData *asArray() {
|
CollectionData *asArray() {
|
||||||
return isArrayStrict() ? &_content.asCollection : 0;
|
return isArrayStrict() ? &_content.asCollection : 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,8 +69,6 @@ inline T VariantData::asFloat() const {
|
|||||||
return parseNumber<T>(_content.asString.data);
|
return parseNumber<T>(_content.asString.data);
|
||||||
case VALUE_IS_FLOAT:
|
case VALUE_IS_FLOAT:
|
||||||
return static_cast<T>(_content.asFloat);
|
return static_cast<T>(_content.asFloat);
|
||||||
case VALUE_IS_POINTER: // P+34 G+0
|
|
||||||
return _content.asPointer->asFloat<T>();
|
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user