From 11c7c49d7b492cff17a0c9ff745fc226866ff353 Mon Sep 17 00:00:00 2001
From: Gary Talent <gtalent2@gmail.com>
Date: Fri, 8 Sep 2017 18:06:27 -0500
Subject: [PATCH] Add some missing field checks to JSON reader

---
 src/nostalgia/studio/lib/json_read.hpp | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/nostalgia/studio/lib/json_read.hpp b/src/nostalgia/studio/lib/json_read.hpp
index e2fa84a6..8b781707 100644
--- a/src/nostalgia/studio/lib/json_read.hpp
+++ b/src/nostalgia/studio/lib/json_read.hpp
@@ -59,18 +59,26 @@ class JsonReader {
 
 template<typename T>
 ox::Error JsonReader::op(QString fieldName, T *dest) {
-	auto obj = m_src[fieldName].toObject();
-	auto reader = JsonReader(obj);
-	return ioOp(&reader, dest);
+	if (m_src.contains(fieldName)) {
+		auto obj = m_src[fieldName].toObject();
+		auto reader = JsonReader(obj);
+		return ioOp(&reader, dest);
+	} else {
+		return JSON_ERR_FIELD_MISSING;
+	}
 };
 
 template<typename T>
 ox::Error JsonReader::op(QString fieldName, QVector<T> *dest) {
 	ox::Error err = 0;
-	auto a = m_src[fieldName].toArray();
-	dest->resize(a.size());
-	for (int i = 0; i < dest->size(); i++) {
-		err |= op(a[i], &(*dest)[i]);
+	if (m_src.contains(fieldName)) {
+		auto a = m_src[fieldName].toArray();
+		dest->resize(a.size());
+		for (int i = 0; i < dest->size(); i++) {
+			err |= op(a[i], &(*dest)[i]);
+		}
+	} else {
+		err |= JSON_ERR_FIELD_MISSING;
 	}
 	return err;
 };