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) { | ||||
|     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) { | ||||
|   | ||||
| @@ -87,6 +87,12 @@ class VariantData { | ||||
|  | ||||
|   bool asBoolean() const; | ||||
|  | ||||
|   const VariantData *resolve() const { | ||||
|     if (isPointer()) | ||||
|       return _content.asPointer->resolve(); | ||||
|     return this; | ||||
|   } | ||||
|  | ||||
|   CollectionData *asArray() { | ||||
|     return isArrayStrict() ? &_content.asCollection : 0; | ||||
|   } | ||||
|   | ||||
| @@ -69,8 +69,6 @@ inline T VariantData::asFloat() const { | ||||
|       return parseNumber<T>(_content.asString.data); | ||||
|     case VALUE_IS_FLOAT: | ||||
|       return static_cast<T>(_content.asFloat); | ||||
|     case VALUE_IS_POINTER:  // P+34 G+0 | ||||
|       return _content.asPointer->asFloat<T>(); | ||||
|     default: | ||||
|       return 0; | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user