diff --git a/src/debug.cpp b/src/debug.cpp index fa63a3b..1e8f554 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -1494,6 +1494,14 @@ std::string game_info::operating_system() } #if !defined(__CYGWIN__) && !defined (__ANDROID__) && ( defined (__linux__) || defined(unix) || defined(__unix__) || defined(__unix) || ( defined(__APPLE__) && defined(__MACH__) ) || defined(BSD) ) // linux; unix; MacOs; BSD + // +class FILEDeleter +{ + public: + void operator()( FILE *f ) const noexcept { + pclose( f ); + } +}; /** Execute a command with the shell by using `popen()`. * @param command The full command to execute. * @note The output buffer is limited to 512 characters. @@ -1504,7 +1512,7 @@ static std::string shell_exec( const std::string &command ) std::vector buffer( 512 ); std::string output; try { - std::unique_ptr pipe( popen( command.c_str(), "r" ), pclose ); + std::unique_ptr pipe( popen( command.c_str(), "r" ) ); if( pipe ) { while( fgets( buffer.data(), buffer.size(), pipe.get() ) != nullptr ) { output += buffer.data();