summaryrefslogtreecommitdiff
path: root/ucb
diff options
context:
space:
mode:
authorHerbert Dürr <hdu@apache.org>2014-03-27 15:50:58 +0000
committerHerbert Dürr <hdu@apache.org>2014-03-27 15:50:58 +0000
commita5df560f6a44de04a66da1dd05960ff2ee6bd2ba (patch)
treefbb6fc705dd0efdfb1cf32ff7bc77e06a052215f /ucb
parent184348f1a82bc70ebf510b03a2ef0537d1cea278 (diff)
#i124421# force the availability of type_info symbols thrown by the ucb module
When exceptions are passed around in uno::Any types to be thrown later it was observed on OSX64 that the type_info symbols of these exceptions were not available anywhere. On most platforms the UNO bridge would synthesize them by emulating how the platform's toolchain would do it. Forcing the emission of the type_infos by the real toolchain is much better than second guessing and reverse engineering its operation. An even better approach would be to have the ucb throw the exceptions itself instead of wrapping, rewrapping, unwrapping, etc. them. Once this is done the dummyThrower helper function is no longer needed.
Notes
Notes: prefer: d83de4b1a93ba7ed7bc3243073be3de96a44bfa9
Diffstat (limited to 'ucb')
-rw-r--r--ucb/source/ucp/webdav/webdavcontent.cxx17
1 files changed, 17 insertions, 0 deletions
diff --git a/ucb/source/ucp/webdav/webdavcontent.cxx b/ucb/source/ucp/webdav/webdavcontent.cxx
index df558f0e3462..0a418084167f 100644
--- a/ucb/source/ucp/webdav/webdavcontent.cxx
+++ b/ucb/source/ucp/webdav/webdavcontent.cxx
@@ -3352,6 +3352,23 @@ uno::Any Content::MapDAVException( const DAVException & e, sal_Bool bWrite )
return aException;
}
+// #i124421# force the availability of type_info symbols for exceptions
+// that used to be passed around in uno::Any variables and thrown later
+void ucb_dummyThrower( int i) {
+ switch( i) {
+ case 10: throw ucb::InteractiveNetworkGeneralException();
+ case 11: throw ucb::InteractiveAugmentedIOException();
+ case 12: throw ucb::InteractiveNetworkGeneralException();
+ case 13: throw ucb::InteractiveNetworkWriteException();
+ case 14: throw ucb::InteractiveNetworkReadException();
+ case 15: throw ucb::InteractiveNetworkConnectException();
+ case 16: throw ucb::InteractiveLockingLockedException();
+ case 17: throw ucb::InteractiveLockingNotLockedException();
+ case 18: throw ucb::InteractiveNetworkGeneralException();
+ case 19: throw ucb::InteractiveLockingLockExpiredException();
+ }
+}
+
//=========================================================================
// static
bool Content::shouldAccessNetworkAfterException( const DAVException & e )