diff --git a/src/internal/scratch3reader.cpp b/src/internal/scratch3reader.cpp index c747a023..af41223c 100644 --- a/src/internal/scratch3reader.cpp +++ b/src/internal/scratch3reader.cpp @@ -404,12 +404,16 @@ bool Scratch3Reader::load() } // width - READER_STEP(step, "monitor -> width"); - monitor->setWidth(jsonMonitor["width"]); + if (jsonMonitor.contains("width")) { + READER_STEP(step, "monitor -> width"); + monitor->setWidth(jsonMonitor["width"]); + } // height - READER_STEP(step, "monitor -> height"); - monitor->setHeight(jsonMonitor["height"]); + if (jsonMonitor.contains("height")) { + READER_STEP(step, "monitor -> height"); + monitor->setHeight(jsonMonitor["height"]); + } // x READER_STEP(step, "monitor -> x"); diff --git a/test/load_project/load_project_test.cpp b/test/load_project/load_project_test.cpp index f95c338a..639e4c0d 100644 --- a/test/load_project/load_project_test.cpp +++ b/test/load_project/load_project_test.cpp @@ -701,3 +701,11 @@ TEST(LoadProjectTest, ProjectInvalidTest) ASSERT_EQ(p.scratchVersion(), ScratchVersion::Invalid); ASSERT_FALSE(p.load()); } + +TEST(LoadProjectTest, LoadNullDimensionMonitor) +{ + // Regtest for #448 + std::string name = "regtest_projects/448_null_monitor_dimension.sb3"; + Project p(name); + ASSERT_TRUE(p.load()); +} diff --git a/test/regtest_projects/448_null_monitor_dimension.sb3 b/test/regtest_projects/448_null_monitor_dimension.sb3 new file mode 100644 index 00000000..c52a77f2 Binary files /dev/null and b/test/regtest_projects/448_null_monitor_dimension.sb3 differ