Delete layout when readMapLayouts fails

This commit is contained in:
GriffinR 2023-01-25 23:39:10 -05:00
parent 2fce82d1b4
commit 2ee60f4544

View file

@ -461,6 +461,7 @@ bool Project::readMapLayouts() {
layout->id = ParseUtil::jsonToQString(layoutObj["id"]); layout->id = ParseUtil::jsonToQString(layoutObj["id"]);
if (layout->id.isEmpty()) { if (layout->id.isEmpty()) {
logError(QString("Missing 'id' value on layout %1 in %2").arg(i).arg(layoutsFilepath)); logError(QString("Missing 'id' value on layout %1 in %2").arg(i).arg(layoutsFilepath));
delete layout;
return false; return false;
} }
if (mapLayouts.contains(layout->id)) { if (mapLayouts.contains(layout->id)) {
@ -471,17 +472,20 @@ bool Project::readMapLayouts() {
layout->name = ParseUtil::jsonToQString(layoutObj["name"]); layout->name = ParseUtil::jsonToQString(layoutObj["name"]);
if (layout->name.isEmpty()) { if (layout->name.isEmpty()) {
logError(QString("Missing 'name' value for %1 in %2").arg(layout->id).arg(layoutsFilepath)); logError(QString("Missing 'name' value for %1 in %2").arg(layout->id).arg(layoutsFilepath));
delete layout;
return false; return false;
} }
int lwidth = ParseUtil::jsonToInt(layoutObj["width"]); int lwidth = ParseUtil::jsonToInt(layoutObj["width"]);
if (lwidth <= 0) { if (lwidth <= 0) {
logError(QString("Invalid 'width' value '%1' for %2 in %3. Must be greater than 0.").arg(lwidth).arg(layout->id).arg(layoutsFilepath)); logError(QString("Invalid 'width' value '%1' for %2 in %3. Must be greater than 0.").arg(lwidth).arg(layout->id).arg(layoutsFilepath));
delete layout;
return false; return false;
} }
layout->width = lwidth; layout->width = lwidth;
int lheight = ParseUtil::jsonToInt(layoutObj["height"]); int lheight = ParseUtil::jsonToInt(layoutObj["height"]);
if (lheight <= 0) { if (lheight <= 0) {
logError(QString("Invalid 'height' value '%1' for %2 in %3. Must be greater than 0.").arg(lheight).arg(layout->id).arg(layoutsFilepath)); logError(QString("Invalid 'height' value '%1' for %2 in %3. Must be greater than 0.").arg(lheight).arg(layout->id).arg(layoutsFilepath));
delete layout;
return false; return false;
} }
layout->height = lheight; layout->height = lheight;
@ -507,21 +511,25 @@ bool Project::readMapLayouts() {
layout->tileset_primary_label = ParseUtil::jsonToQString(layoutObj["primary_tileset"]); layout->tileset_primary_label = ParseUtil::jsonToQString(layoutObj["primary_tileset"]);
if (layout->tileset_primary_label.isEmpty()) { if (layout->tileset_primary_label.isEmpty()) {
logError(QString("Missing 'primary_tileset' value for %1 in %2").arg(layout->id).arg(layoutsFilepath)); logError(QString("Missing 'primary_tileset' value for %1 in %2").arg(layout->id).arg(layoutsFilepath));
delete layout;
return false; return false;
} }
layout->tileset_secondary_label = ParseUtil::jsonToQString(layoutObj["secondary_tileset"]); layout->tileset_secondary_label = ParseUtil::jsonToQString(layoutObj["secondary_tileset"]);
if (layout->tileset_secondary_label.isEmpty()) { if (layout->tileset_secondary_label.isEmpty()) {
logError(QString("Missing 'secondary_tileset' value for %1 in %2").arg(layout->id).arg(layoutsFilepath)); logError(QString("Missing 'secondary_tileset' value for %1 in %2").arg(layout->id).arg(layoutsFilepath));
delete layout;
return false; return false;
} }
layout->border_path = ParseUtil::jsonToQString(layoutObj["border_filepath"]); layout->border_path = ParseUtil::jsonToQString(layoutObj["border_filepath"]);
if (layout->border_path.isEmpty()) { if (layout->border_path.isEmpty()) {
logError(QString("Missing 'border_filepath' value for %1 in %2").arg(layout->id).arg(layoutsFilepath)); logError(QString("Missing 'border_filepath' value for %1 in %2").arg(layout->id).arg(layoutsFilepath));
delete layout;
return false; return false;
} }
layout->blockdata_path = ParseUtil::jsonToQString(layoutObj["blockdata_filepath"]); layout->blockdata_path = ParseUtil::jsonToQString(layoutObj["blockdata_filepath"]);
if (layout->blockdata_path.isEmpty()) { if (layout->blockdata_path.isEmpty()) {
logError(QString("Missing 'blockdata_filepath' value for %1 in %2").arg(layout->id).arg(layoutsFilepath)); logError(QString("Missing 'blockdata_filepath' value for %1 in %2").arg(layout->id).arg(layoutsFilepath));
delete layout;
return false; return false;
} }
mapLayouts.insert(layout->id, layout); mapLayouts.insert(layout->id, layout);