summaryrefslogtreecommitdiff
path: root/cpp/src/slice2cppe/Gen.cpp
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2005-07-22 12:56:12 +0000
committerMatthew Newhook <matthew@zeroc.com>2005-07-22 12:56:12 +0000
commitf35cbc2d0b87b6a9a77603649fe26db4f4f244b3 (patch)
tree9a64ced70f5d45c0bf5e067f89e4d5a46df44ecc /cpp/src/slice2cppe/Gen.cpp
parentFixed bug 418. (diff)
downloadice-f35cbc2d0b87b6a9a77603649fe26db4f4f244b3.tar.bz2
ice-f35cbc2d0b87b6a9a77603649fe26db4f4f244b3.tar.xz
ice-f35cbc2d0b87b6a9a77603649fe26db4f4f244b3.zip
code generator generates ARMv4 exception handling bug workaround.
Diffstat (limited to 'cpp/src/slice2cppe/Gen.cpp')
-rw-r--r--cpp/src/slice2cppe/Gen.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/cpp/src/slice2cppe/Gen.cpp b/cpp/src/slice2cppe/Gen.cpp
index a68f7e16936..a9a31c62193 100644
--- a/cpp/src/slice2cppe/Gen.cpp
+++ b/cpp/src/slice2cppe/Gen.cpp
@@ -1322,6 +1322,18 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
C << sb;
C << nl << "__handleException(__ex, __cnt);";
C << eb;
+
+ C.zeroIndent();
+ C << nl << "#if defined(_MSC_VER) && (_MSC_VER == 1201) && (_M_ARM == 4) // EVC4 SP4 bug."; // COMPILERBUG
+ C.restoreIndent();
+ C << nl << "catch(...)";
+ C << sb;
+ C << nl << "throw;";
+ C << eb;
+ C.zeroIndent();
+ C << nl << "#endif";
+ C.restoreIndent();
+
C << eb;
C << eb;
}