diff --git a/modules/core/test/test_io.cpp b/modules/core/test/test_io.cpp index 4d3bb81066..b725dbcf23 100644 --- a/modules/core/test/test_io.cpp +++ b/modules/core/test/test_io.cpp @@ -1345,3 +1345,24 @@ TEST(Core_InputOutput, FileStorage_json_bool) ASSERT_EQ((int)fs["bool_false"], 0); fs.release(); } + +TEST(Core_InputOutput, FileStorage_free_file_after_exception) +{ + const std::string fileName = "test.yml"; + const std::string content = "%YAML:1.0\n cameraMatrix;:: !\n"; + + fstream testFile; + testFile.open(fileName, std::fstream::out); + if(!testFile.is_open()) FAIL(); + testFile << content; + testFile.close(); + + try + { + FileStorage fs(fileName, FileStorage::READ + FileStorage::FORMAT_YAML); + } + catch (const std::exception&) + { + ASSERT_EQ(std::remove(fileName.c_str()), 0); + } +}