forked from catchorg/Catch2
		
	std::ifstream in libstdc++ contains a bug, where it sets errno to zero. To work around it, we manually save the errno before using std::ifstream in debugger check, and reset it after we are done. We also preventively save errno before using sprintf. Fixes #835
		
			
				
	
	
		
			26 lines
		
	
	
		
			570 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			570 B
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 *  Created by Martin on 06/03/2017.
 | 
						|
 *
 | 
						|
 *  Distributed under the Boost Software License, Version 1.0. (See accompanying
 | 
						|
 *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | 
						|
 */
 | 
						|
#ifndef TWOBLUECUBES_CATCH_ERRNO_GUARD_HPP_INCLUDED
 | 
						|
#define TWOBLUECUBES_CATCH_ERRNO_GUARD_HPP_INCLUDED
 | 
						|
 | 
						|
#include <cerrno>
 | 
						|
 | 
						|
 | 
						|
namespace Catch {
 | 
						|
 | 
						|
    class ErrnoGuard {
 | 
						|
    public:
 | 
						|
        ErrnoGuard():m_oldErrno(errno){}
 | 
						|
        ~ErrnoGuard() { errno = m_oldErrno; }
 | 
						|
    private:
 | 
						|
        int m_oldErrno;
 | 
						|
    };
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
#endif // TWOBLUECUBES_CATCH_ERRNO_GUARD_HPP_INCLUDED
 |