asIntegral() ignores pointers (6812,5626)

This commit is contained in:
Benoit Blanchon
2022-03-28 12:24:50 +02:00
parent 228a48c368
commit b5f840c0d1
2 changed files with 4 additions and 5 deletions

View File

@@ -48,7 +48,9 @@ struct Converter<
static T fromJson(VariantConstRef src) {
ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED(T);
const VariantData* data = getData(src);
return data ? data->asIntegral<T>() : T();
if (!data)
return T();
return data->resolve()->asIntegral<T>();
}
static bool checkJson(VariantConstRef src) {
@@ -64,8 +66,7 @@ struct Converter<T, typename enable_if<is_enum<T>::value>::type> {
}
static T fromJson(VariantConstRef src) {
const VariantData* data = getData(src);
return data ? static_cast<T>(data->asIntegral<int>()) : T();
return static_cast<T>(Converter<int>::fromJson(src));
}
static bool checkJson(VariantConstRef src) {

View File

@@ -29,8 +29,6 @@ inline T VariantData::asIntegral() const {
return parseNumber<T>(_content.asString.data);
case VALUE_IS_FLOAT:
return convertNumber<T>(_content.asFloat);
case VALUE_IS_POINTER: // P+28 G+0
return _content.asPointer->asIntegral<T>();
default:
return 0;
}