summaryrefslogtreecommitdiffstats
path: root/src/Configuration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Configuration.cpp')
-rw-r--r--src/Configuration.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/Configuration.cpp b/src/Configuration.cpp
index c05c516e..d0d606e8 100644
--- a/src/Configuration.cpp
+++ b/src/Configuration.cpp
@@ -18,6 +18,7 @@
#include <cerrno>
#include <cstring>
#include <iostream>
+#include <memory>
#include <thread>
#include "ingen/Configuration.hpp"
@@ -279,7 +280,8 @@ Configuration::save(URIMap& uri_map,
}
// Attempt to open file for writing
- FILE* file = fopen(path.c_str(), "w");
+ std::unique_ptr<FILE, decltype(&fclose)> file{fopen(path.c_str(), "w"),
+ &fclose};
if (!file) {
throw FileError((fmt("Failed to open file %1% (%2%)")
% path % strerror(errno)).str());
@@ -302,7 +304,7 @@ Configuration::save(URIMap& uri_map,
env,
&base_uri,
serd_file_sink,
- file);
+ file.get());
// Write a prefix directive for each prefix in the environment
serd_env_foreach(env, (SerdPrefixSink)serd_writer_set_prefix, writer);
@@ -334,7 +336,6 @@ Configuration::save(URIMap& uri_map,
serd_writer_free(writer);
serd_env_free(env);
serd_node_free(&base);
- fclose(file);
return path;
}