mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +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