summaryrefslogtreecommitdiff
path: root/cppuhelper
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-08-02 15:13:37 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-08-04 15:37:30 +0200
commit6ddecf61ecada646fbd6f8809270d47289727e8a (patch)
treed4d699b1a811e751e6bb948e441c4cdd822cb708 /cppuhelper
parent3aab478e77937f9e40f4fdfa04f7d202d7391fb8 (diff)
fillUnoException not working on std::rethrow_exception exceptions
used since... commit dacc1b40df67d154c96b256b0d920460f38c3d11 Date: Sat Jul 28 16:33:22 2018 +0100 ofz#9597 rethrown IOException not caught by catch IOException the adjustedPtr seems to be as expected, but the type_info not. Presumably these are thrown as 'dependent exceptions' (?) https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/libsupc%2B%2B/eh_type.cc#L42 Change-Id: Ibd736abe941bb1d5facdb88139b3a0e6cf32cf1f Reviewed-on: https://gerrit.libreoffice.org/58477 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'cppuhelper')
-rw-r--r--cppuhelper/qa/misc/test_misc.cxx32
1 files changed, 32 insertions, 0 deletions
diff --git a/cppuhelper/qa/misc/test_misc.cxx b/cppuhelper/qa/misc/test_misc.cxx
index 151eb15ea1f6..0e4fdf9efb42 100644
--- a/cppuhelper/qa/misc/test_misc.cxx
+++ b/cppuhelper/qa/misc/test_misc.cxx
@@ -19,9 +19,11 @@ class Test : public ::CppUnit::TestFixture
{
public:
void testCatchThrow();
+ void testgetCaughtException();
CPPUNIT_TEST_SUITE(Test);
CPPUNIT_TEST(testCatchThrow);
+ CPPUNIT_TEST(testgetCaughtException);
CPPUNIT_TEST_SUITE_END();
};
@@ -51,6 +53,36 @@ void Test::testCatchThrow()
}
}
+void Test::testgetCaughtException()
+{
+ css::uno::Any aSavedExceptionAny;
+ std::exception_ptr
+ aSavedException; /// exception caught during unzipping is saved to be thrown during reading
+ try
+ {
+ throw css::uno::RuntimeException("RuntimeException");
+ }
+ catch (...)
+ {
+ aSavedException = std::current_exception();
+ }
+ CPPUNIT_ASSERT(bool(aSavedException));
+ try
+ {
+ std::rethrow_exception(aSavedException);
+ }
+ catch (const css::uno::RuntimeException&)
+ {
+ // the expected case
+ aSavedExceptionAny = cppu::getCaughtException();
+ }
+ catch (...)
+ {
+ CPPUNIT_ASSERT(false);
+ }
+ CPPUNIT_ASSERT(aSavedExceptionAny.hasValue());
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
}