# HG changeset patch # User František Kučera # Date 1623084045 -7200 # Node ID 77d585a1b98ce5a5232bf6d2d231fa2be513bc49 # Parent ba850b20fe0da8f9e82e62967f58ff24c3df2b61 improved map support diff -r ba850b20fe0d -r 77d585a1b98c src/XMLDocumentConstructor.h --- a/src/XMLDocumentConstructor.h Sun Jun 06 18:29:23 2021 +0200 +++ b/src/XMLDocumentConstructor.h Mon Jun 07 18:40:45 2021 +0200 @@ -61,7 +61,7 @@ std::stringstream currentIndefiniteString; uint64_t currentTag; - bool currentTagPresent; + bool currentTagPresent = false; cbor_callbacks callbacks = cbor_empty_callbacks; @@ -156,17 +156,18 @@ } void flushCurrentIndefiniteString(Glib::ustring cborType) { - mode.pop_back(); appendScalarValue(currentIndefiniteString.str(), cborType); currentIndefiniteString = std::stringstream(); } void containerEnd() { + Mode m = mode.back(); + mode.pop_back(); remainingItems.pop_back(); - if (mode.back() == Mode::MAP_KEY || mode.back() == Mode::MAP_VALUE) current = parentOrSelf(current); - else if (mode.back() == Mode::BYTE_STRING) flushCurrentIndefiniteString("byte-string"); - else if (mode.back() == Mode::CHAR_STRING) flushCurrentIndefiniteString("string"); - else mode.pop_back(); // TODO: assert map/array + + if (m == Mode::MAP_KEY || m == Mode::MAP_VALUE) current = parentOrSelf(current); + else if (m == Mode::BYTE_STRING) flushCurrentIndefiniteString("byte-string"); + else if (m == Mode::CHAR_STRING) flushCurrentIndefiniteString("string"); } public: