From 38c5343f84799fc5041575f3ec808f7476b6eea3 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Mon, 16 Apr 2018 14:33:35 -0700 Subject: [PATCH] Catch std::ifstream::failure by reference Fixes error: catching polymorphic type 'class std::ios_base::failure' by value [-Werror=catch-value=] } catch (std::ofstream::failure) { ^~~~~~~ Signed-off-by: Khem Raj --- src/base/conf.cc | 4 ++-- src/dtm/dtmnd/dtm_main.cc | 2 +- src/dtm/dtmnd/multicast.cc | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/base/conf.cc b/src/base/conf.cc index d5755a1..4820357 100644 --- a/src/base/conf.cc +++ b/src/base/conf.cc @@ -189,7 +189,7 @@ std::string Conf::ReadFile(const std::string& path_name, try { str.open(path_name); str >> contents; - } catch (std::ifstream::failure) { + } catch (std::ifstream::failure& e) { contents.clear(); } return (str.fail() || contents.empty()) ? default_contents : contents; @@ -203,7 +203,7 @@ void Conf::WriteFileAtomically(const std::string& path_name, try { str.open(tmp_file, std::ofstream::out | std::ofstream::trunc); str << contents << std::endl; - } catch (std::ofstream::failure) { + } catch (std::ofstream::failure& e) { success = false; } str.close(); diff --git a/src/dtm/dtmnd/dtm_main.cc b/src/dtm/dtmnd/dtm_main.cc index 585e11e..5cf6ad7 100644 --- a/src/dtm/dtmnd/dtm_main.cc +++ b/src/dtm/dtmnd/dtm_main.cc @@ -367,7 +367,7 @@ void UpdateNodeIdFile(DTM_INTERNODE_CB *cb) { try { str.open(PKGLOCALSTATEDIR "/node_id", std::ofstream::out); str << std::hex << node_id << std::endl; - } catch (std::ofstream::failure) { + } catch (std::ofstream::failure& e) { } str.close(); } diff --git a/src/dtm/dtmnd/multicast.cc b/src/dtm/dtmnd/multicast.cc index cadc002..7c25fea 100644 --- a/src/dtm/dtmnd/multicast.cc +++ b/src/dtm/dtmnd/multicast.cc @@ -199,7 +199,7 @@ bool Multicast::GetPeersFromFile(const std::string &path_name) { } } } - } catch (std::ifstream::failure) { + } catch (std::ifstream::failure& e) { LOG_ER("Caught std::ifstream::failure when reading file '%s', peers=%zu", path_name.c_str(), static_cast(peers_.size())); peers_.clear();