From 8eba534e99cd8db29cca03035a115312935a22a3 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 7 Mar 2019 22:41:35 +0100 Subject: Use smart pointers to handle FILE streams --- src/SocketReader.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/SocketReader.cpp') diff --git a/src/SocketReader.cpp b/src/SocketReader.cpp index de2f3342..590b40cd 100644 --- a/src/SocketReader.cpp +++ b/src/SocketReader.cpp @@ -15,6 +15,7 @@ */ #include +#include #include @@ -93,7 +94,8 @@ SocketReader::run() LV2_URID_Map* map = &_world.uri_map().urid_map_feature()->urid_map; // Open socket as a FILE for reading directly with serd - FILE* f = fdopen(_socket->fd(), "r"); + std::unique_ptr f{fdopen(_socket->fd(), "r"), + &fclose}; if (!f) { _world.log().error(fmt("Failed to open connection (%1%)\n") % strerror(errno)); @@ -134,7 +136,7 @@ SocketReader::run() nullptr); serd_env_set_base_uri(_env, sord_node_to_serd_node(base_uri)); - serd_reader_start_stream(reader, f, (const uint8_t*)"(socket)", false); + serd_reader_start_stream(reader, f.get(), (const uint8_t*)"(socket)", false); // Make an AtomReader to call Ingen Interface methods based on Atom AtomReader ar(_world.uri_map(), _world.uris(), _world.log(), _iface); @@ -145,7 +147,7 @@ SocketReader::run() pfd.revents = 0; while (!_exit_flag) { - if (feof(f)) { + if (feof(f.get())) { break; // Lost connection } @@ -187,7 +189,7 @@ SocketReader::run() std::lock_guard lock(_world.rdf_mutex()); // Destroy everything - fclose(f); + f.reset(); sord_inserter_free(_inserter); serd_reader_end_stream(reader); sratom_free(sratom); -- cgit v1.2.1