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:
Martin Hořeňovský 2017-09-28 12:47:32 +02:00
parent 11918b76d0
commit 70e0d48978
2 changed files with 4 additions and 3 deletions

View File

@ -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() );
}

View File

@ -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 );
}