Skip to content

Commit

Permalink
Call std::getline with an lvalue std::ifstream rather than an rvalue.…
Browse files Browse the repository at this point in the history
… Older

libstdc++ versions (e.g. 4.8.2) don't have the rvalue overload of
std::getline. This fixes this error when compiled with libstdc++ 4.8.2:

ext/backward-cpp/backward.hpp: In static member function 'static std::string backward::TraceResolverLinuxBase::get_argv0()':
ext/backward-cpp/backward.hpp:1031:66: error: no matching function for call to 'getline(std::ifstream, std::string&, char)'
     std::getline(std::ifstream("/proc/self/cmdline"), argv0, '\0');
                                                                  ^
ext/backward-cpp/backward.hpp:1031:66: note: candidates are:
/usr/include/c++/4.8/bits/basic_string.h:2799:5: note: std::basic_istream<_CharT, _Traits>& std::getline(std::basic_istream<_CharT, _Traits>&, std::basic_string<_CharT, _Traits, _Alloc>&, _CharT) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]
     getline(basic_istream<char>& __in, basic_string<char>& __str,
     ^
/usr/include/c++/4.8/bits/basic_string.h:2799:5: note:   no known conversion for argument 1 from 'std::ifstream {aka std::basic_ifstream<char>}' to 'std::basic_istream<char>&'
  • Loading branch information
forrestv committed Apr 13, 2020
1 parent 1ab8c87 commit f66f422
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion backward.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1028,7 +1028,8 @@ class TraceResolverLinuxBase

static std::string get_argv0() {
std::string argv0;
std::getline(std::ifstream("/proc/self/cmdline"), argv0, '\0');
std::ifstream ifs("/proc/self/cmdline");
std::getline(ifs, argv0, '\0');
return argv0;
}

Expand Down

0 comments on commit f66f422

Please sign in to comment.