Jelajahi Sumber

VariantImpl: change `setRawString()` to return `bool`

Benoit Blanchon 7 bulan lalu
induk
melakukan
38f61d322f

+ 2 - 2
src/ArduinoJson/Variant/ConverterImpl.hpp

@@ -173,10 +173,10 @@ inline detail::enable_if_t<detail::IsString<T>::value> convertToJson(
 // SerializedValue<const __FlashStringHelper*>
 template <typename T>
 struct Converter<SerializedValue<T>> : private detail::VariantAttorney {
-  static void toJson(SerializedValue<T> src, JsonVariant dst) {
+  static bool toJson(SerializedValue<T> src, JsonVariant dst) {
     auto variant = getImpl(dst);
     variant.clear();
-    variant.setRawString(detail::adaptString(src.data(), src.size()));
+    return variant.setRawString(detail::adaptString(src.data(), src.size()));
   }
 };
 

+ 6 - 4
src/ArduinoJson/Variant/VariantImpl.hpp

@@ -441,12 +441,14 @@ class VariantImpl {
   }
 
   template <typename TAdaptedString>
-  void setRawString(TAdaptedString value) {
+  bool setRawString(TAdaptedString value) {
     if (!data_)
-      return;
+      return false;
     auto dup = resources_->saveString(value);
-    if (dup)
-      data_->setRawString(dup);
+    if (!dup)
+      return false;
+    data_->setRawString(dup);
+    return true;
   }
 
   template <typename TAdaptedString>