From 0c1794a93f0f0385713505d960bdbedb09238eb7 Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Wed, 17 Aug 2011 05:32:09 +0000 Subject: [PATCH] Don't silently fail to start up if a config file is invalid Originally committed to SVN as r5535. --- aegisub/libaegisub/common/json.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/aegisub/libaegisub/common/json.cpp b/aegisub/libaegisub/common/json.cpp index a81145aa1..80f17b9d4 100644 --- a/aegisub/libaegisub/common/json.cpp +++ b/aegisub/libaegisub/common/json.cpp @@ -59,9 +59,17 @@ json::UnknownElement file(const std::string &file) { json::UnknownElement file(const std::string &file, const std::string &default_config) { try { return parse(io::Open(file)); - // We only want to catch this single error as anything else could - // reflect a deeper problem. ie, failed i/o, wrong permissions etc. - } catch (const acs::AcsNotFound&) { + } + catch (const acs::AcsNotFound&) { + // Not an error + return parse(new std::istringstream(default_config)); + } + catch (json::Exception&) { + // Already logged in parse + return parse(new std::istringstream(default_config)); + } + catch (agi::Exception& e) { + LOG_E("json/file") << "Unexpted error when reading config file " << file << ": " << e.GetMessage(); return parse(new std::istringstream(default_config)); } }