diff --git a/CHANGELOG.md b/CHANGELOG.md index 41766bb..38430b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,20 @@ Versioning](https://semver.org/). > had little or no release-note detail, the entry is intentionally terse > rather than inferring unsupported intent. +## [0.10.2] - 2026-08-21 + +### Fixed + +- Made fallback detailed-deserialization control flow explicit in + `ESPressio_SerializationTraversal.hpp`, eliminating GCC's + `-Wmisleading-indentation` diagnostic when downstream consumers compile + ESPressio Serializable headers with warnings treated as errors. + +### Compatibility + +- No API, wire-format, or runtime behaviour changes. +- ESPB v2 compatibility is unchanged. + ## [0.10.1] - 2026-08-20 ### Fixed @@ -115,4 +129,4 @@ milestones before the first published GitHub Release at 0.9.0. > release. Earlier 0.x version numbers appeared during repository > development, but are grouped here rather than assigning release dates > or exact contents that are not fully supported by the published -> release record. \ No newline at end of file +> release record. diff --git a/README.md b/README.md index 6f49daa..42250b5 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,16 @@ Development Platform. ## Latest Stable Version -**0.10.1** +**0.10.2** + +### 0.10.2 warning-clean detailed deserialization + +Version 0.10.2 makes the fallback branch in detailed deserialization +unambiguous to compilers, eliminating GCC's `-Wmisleading-indentation` +diagnostic when downstream consumers build ESPressio Serializable headers with +warnings treated as errors. + +There are no API, runtime-behaviour, or wire-format changes in this patch. ### 0.10.1 bounded BinaryArchive decoding @@ -224,4 +233,4 @@ Ordinary usage of those libraries remains serialization-free. - Bounded and allocation-free BinaryArchive inspection where appropriate. - Validation and schema evolution. - Compile-time diagnostics where possible. -- Optional rather than ecosystem-wide dependency. \ No newline at end of file +- Optional rather than ecosystem-wide dependency. diff --git a/library.json b/library.json index f8bec72..c8e0499 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "ESPressio-Serializable", - "version": "0.10.1", + "version": "0.10.2", "description": "Compile-time declarative serialization components for the Flowduino ESPressio Development Platform.", "keywords": [ "serialization", diff --git a/library.properties b/library.properties index 58e9cf7..6cd54f3 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=ESPressio Serializable -version=0.10.1 +version=0.10.2 author=Flowduino maintainer=Flowduino sentence=Compile-time declarative serialization components for the ESPressio Development Platform. diff --git a/src/ESPressio_SerializationTraversal.hpp b/src/ESPressio_SerializationTraversal.hpp index c5aa592..08663be 100644 --- a/src/ESPressio_SerializationTraversal.hpp +++ b/src/ESPressio_SerializationTraversal.hpp @@ -456,7 +456,10 @@ namespace ESPressio::Serializable::Detail { } else if constexpr (IsMapLike) { if(node.GetType()!=SerializationNodeType::Array){fail();return result;}value.clear();size_t i=0;for(const auto&child:node.ArrayChildren()){std::string ep=path+"["+std::to_string(i)+"]";if(child.GetType()!=SerializationNodeType::Object){result.Add(SerializationErrorCode::TypeMismatch,ep,"Map entry must be an object",options);}else{auto*kn=child.Find("key");auto*vn=child.Find("value");if(!kn||!vn)result.Add(SerializationErrorCode::MalformedInput,ep,"Map entry requires key and value",options);else{typename T::key_type key{};typename T::mapped_type mapped{};auto kr=FromNodeDetailed(*kn,key,ep+".key",options);auto vr=FromNodeDetailed(*vn,mapped,ep+".value",options);result.Merge(kr,"",options);result.Merge(vr,"",options);if(kr&&vr)value.emplace(std::move(key),std::move(mapped));}}if(!result.ShouldContinue(options))break;++i;}return result; } else { - if(!FromNode(node,value))fail(); return result; + if (!FromNode(node, value)) { + fail(); + } + return result; } }