summaryrefslogtreecommitdiff
path: root/cpp/src/slice2java/Gen.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2007-01-23 14:42:41 +0000
committerBenoit Foucher <benoit@zeroc.com>2007-01-23 14:42:41 +0000
commit59e520bae09191f5cb317fd4a7fbe0e1e89515f1 (patch)
tree8595d43d698c05cb393009eb1a7fc6971a5aeb26 /cpp/src/slice2java/Gen.cpp
parentMade batch auto-flush default (diff)
downloadice-59e520bae09191f5cb317fd4a7fbe0e1e89515f1.tar.bz2
ice-59e520bae09191f5cb317fd4a7fbe0e1e89515f1.tar.xz
ice-59e520bae09191f5cb317fd4a7fbe0e1e89515f1.zip
Fixed bug 1693
Diffstat (limited to 'cpp/src/slice2java/Gen.cpp')
-rw-r--r--cpp/src/slice2java/Gen.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp
index bdc1709c89a..03d04934dca 100644
--- a/cpp/src/slice2java/Gen.cpp
+++ b/cpp/src/slice2java/Gen.cpp
@@ -3349,13 +3349,14 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p)
out << nl << "int __cnt = 0;";
out << nl << "while(true)";
out << sb;
+ out << nl << "Ice._ObjectDel __delBase = null;";
out << nl << "try";
out << sb;
if(op->returnsData())
{
out << nl << "__checkTwowayOnly(\"" << opName << "\");";
}
- out << nl << "Ice._ObjectDel __delBase = __getDelegate();";
+ out << nl << "__delBase = __getDelegate();";
out << nl << '_' << name << "Del __del = (_" << name << "Del)__delBase;";
out << nl;
if(ret)
@@ -3372,16 +3373,16 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p)
out << sb;
if(op->mode() == Operation::Idempotent || op->mode() == Operation::Nonmutating)
{
- out << nl << "__cnt = __handleExceptionWrapperRelaxed(__ex, __cnt);";
+ out << nl << "__cnt = __handleExceptionWrapperRelaxed(__delBase, __ex, __cnt);";
}
else
{
- out << nl << "__handleExceptionWrapper(__ex);";
+ out << nl << "__handleExceptionWrapper(__delBase, __ex);";
}
out << eb;
out << nl << "catch(Ice.LocalException __ex)";
out << sb;
- out << nl << "__cnt = __handleException(__ex, __cnt);";
+ out << nl << "__cnt = __handleException(__delBase, __ex, __cnt);";
out << eb;
out << eb;
out << eb;