summaryrefslogtreecommitdiff
path: root/bridges
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2006-09-25 11:51:09 +0000
committerVladimir Glazounov <vg@openoffice.org>2006-09-25 11:51:09 +0000
commit267e569d56352b17b5f2f00bcacc24ed409b0509 (patch)
tree5399c3f1ccd39102968b2b87b306f3ceb02c96e9 /bridges
parentaca6267c1c926eb8e8d7e21f8364b1372485d2f3 (diff)
INTEGRATION: CWS obo05 (1.14.74); FILE MERGED
2006/09/08 07:24:58 dbo 1.14.74.2: #i53611# msvcr80.dll cleans up thrown exception 2006/09/07 14:18:35 dbo 1.14.74.1: #i53611# adopting offset for accessing current exception in msvcr80.dll
Diffstat (limited to 'bridges')
-rw-r--r--bridges/source/cpp_uno/msvc_win32_intel/except.cxx16
1 files changed, 13 insertions, 3 deletions
diff --git a/bridges/source/cpp_uno/msvc_win32_intel/except.cxx b/bridges/source/cpp_uno/msvc_win32_intel/except.cxx
index 7b7fc71c2893..952928c70c95 100644
--- a/bridges/source/cpp_uno/msvc_win32_intel/except.cxx
+++ b/bridges/source/cpp_uno/msvc_win32_intel/except.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: except.cxx,v $
*
- * $Revision: 1.15 $
+ * $Revision: 1.16 $
*
- * last change: $Author: obo $ $Date: 2006-09-16 15:55:05 $
+ * last change: $Author: vg $ $Date: 2006-09-25 12:51:09 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -533,6 +533,9 @@ int msci_filterCppException(
// hack to get msvcrt internal _curexception field:
pRecord = *reinterpret_cast< EXCEPTION_RECORD ** >(
reinterpret_cast< char * >( __pxcptinfoptrs() ) +
+ // as long as we don't demand msvcr source as build prerequisite
+ // (->platform sdk), we have to code those offsets here.
+ //
// crt\src\mtdll.h:
// offsetof (_tiddata, _curexception) -
// offsetof (_tiddata, _tpxcptinfoptrs):
@@ -540,8 +543,10 @@ int msci_filterCppException(
0x18 // msvcrt,dll
#elif _MSC_VER < 1310
0x20 // msvcr70.dll
-#else
+#elif _MSC_VER < 1400
0x24 // msvcr71.dll
+#else
+ 0x28 // msvcr80.dll
#endif
);
}
@@ -589,9 +594,12 @@ int msci_filterCppException(
uno_type_any_constructAndConvert(
pUnoExc, &exc,
::getCppuType( &exc ).getTypeLibType(), pCpp2Uno );
+#if _MSC_VER < 1400 // msvcr80.dll cleans up, different from former msvcrs
+ // if (! rethrow):
// though this unknown exception leaks now, no user-defined
// exception is ever thrown thru the binary C-UNO dispatcher
// call stack.
+#endif
}
else
{
@@ -599,12 +607,14 @@ int msci_filterCppException(
uno_any_constructAndConvert(
pUnoExc, (void *) pRecord->ExceptionInformation[1],
pExcTypeDescr, pCpp2Uno );
+#if _MSC_VER < 1400 // msvcr80.dll cleans up, different from former msvcrs
if (! rethrow)
{
uno_destructData(
(void *) pRecord->ExceptionInformation[1],
pExcTypeDescr, cpp_release );
}
+#endif
typelib_typedescription_release( pExcTypeDescr );
}