From cbab6481a124af8a9f4bfbb6fa74bbb1e1bdb133 Mon Sep 17 00:00:00 2001 From: Twan van Laarhoven Date: Fri, 22 May 2020 00:25:55 +0200 Subject: [PATCH] When reading, don't add items to a vector before they are read. This avoids nullptrs in the list of fields, cards, etc. when exceptions are thrown --- src/util/io/reader.hpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/util/io/reader.hpp b/src/util/io/reader.hpp index 79df57c5..9eaa70fe 100644 --- a/src/util/io/reader.hpp +++ b/src/util/io/reader.hpp @@ -217,9 +217,10 @@ template void Reader::handle(const Char* name, vector& vector) { String vectorKey = singular_form(name); while (enterBlock(vectorKey.c_str())) { - vector.resize(vector.size() + 1); - handle_greedy(vector.back()); - update_index(vector.back(), vector.size() - 1); // update index for IndexMap + T item; + handle_greedy(item); + update_index(item, vector.size()); // update index for IndexMap + vector.emplace_back(std::move(item)); exitBlock(); } }