mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 04:07:10 +01:00 
			
		
		
		
	Replace throw; with std::rethrow_exception(std::current_exception());
This works around a bug in libcxxrt handling of active exception count that caused std::uncaught_exception() to return true even if there was none. Closes #1028
This commit is contained in:
		| @@ -37,7 +37,7 @@ namespace Catch { | ||||
| #endif | ||||
|         } | ||||
|         catch( TestFailureException& ) { | ||||
|             throw; | ||||
|             std::rethrow_exception(std::current_exception()); | ||||
|         } | ||||
|         catch( std::exception& ex ) { | ||||
|             return ex.what(); | ||||
| @@ -55,7 +55,7 @@ namespace Catch { | ||||
|  | ||||
|     std::string ExceptionTranslatorRegistry::tryTranslators() const { | ||||
|         if( m_translators.empty() ) | ||||
|             throw; | ||||
|             std::rethrow_exception(std::current_exception()); | ||||
|         else | ||||
|             return m_translators[0]->translate( m_translators.begin()+1, m_translators.end() ); | ||||
|     } | ||||
|   | ||||
| @@ -15,6 +15,7 @@ | ||||
|         static std::string translatorName( signature ) | ||||
| #endif | ||||
|  | ||||
| #include <exception> | ||||
| #include <string> | ||||
| #include <vector> | ||||
|  | ||||
| @@ -47,7 +48,7 @@ namespace Catch { | ||||
|             std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const override { | ||||
|                 try { | ||||
|                     if( it == itEnd ) | ||||
|                         throw; | ||||
|                         std::rethrow_exception(std::current_exception()); | ||||
|                     else | ||||
|                         return (*it)->translate( it+1, itEnd ); | ||||
|                 } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Martin Hořeňovský
					Martin Hořeňovský