summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--icespider/compile/routeCompiler.cpp15
1 files changed, 5 insertions, 10 deletions
diff --git a/icespider/compile/routeCompiler.cpp b/icespider/compile/routeCompiler.cpp
index da4f457..3a25d6e 100644
--- a/icespider/compile/routeCompiler.cpp
+++ b/icespider/compile/routeCompiler.cpp
@@ -193,22 +193,17 @@ namespace IceSpider {
}
});
- FILE * out = fopen(output.c_str(), "w");
- FILE * outh = fopen(outputh.c_str(), "w");
+ using FilePtr = std::unique_ptr<FILE, decltype(&fclose)>;
+ const auto out = FilePtr {fopen(output.c_str(), "w"), &fclose};
+ const auto outh = FilePtr {fopen(outputh.c_str(), "w"), &fclose};
if (!out || !outh) {
throw std::runtime_error("Failed to open output files");
}
- AdHoc::ScopeExit outClose(
- [out, outh]() {
- fclose(out);
- fclose(outh);
- },
- nullptr,
- [&output, &outputh]() {
+ AdHoc::ScopeExit outClose(nullptr, nullptr, [&output, &outputh]() {
std::filesystem::remove(output);
std::filesystem::remove(outputh);
});
- processConfiguration(out, outh, output.stem().string(), configuration, units);
+ processConfiguration(out.get(), outh.get(), output.stem().string(), configuration, units);
}
RouteCompiler::Units