summaryrefslogtreecommitdiff
path: root/cpp/src/slice2cpp/Gen.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2012-11-09 09:11:10 +0100
committerBenoit Foucher <benoit@zeroc.com>2012-11-09 09:11:10 +0100
commit184da87329e27c001fdebdaa88511aa71826f4c6 (patch)
tree8b8de8d493936961de56cdb449ef015c860834ad /cpp/src/slice2cpp/Gen.cpp
parentFixed ICE-4928 - GUI Login issues (diff)
downloadice-184da87329e27c001fdebdaa88511aa71826f4c6.tar.bz2
ice-184da87329e27c001fdebdaa88511aa71826f4c6.tar.xz
ice-184da87329e27c001fdebdaa88511aa71826f4c6.zip
Java and C# fix for ICE-4930, invalid 1.0 marhsaling of pending objects
Diffstat (limited to 'cpp/src/slice2cpp/Gen.cpp')
-rw-r--r--cpp/src/slice2cpp/Gen.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index ac7058fc64b..f7e0f4b615f 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -2237,6 +2237,10 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
{
C << nl << "::IceInternal::BasicStream* __is = __result->__startReadParams();";
writeUnmarshalCode(C, outParams, p, _useWstring | TypeContextAMIEnd);
+ if(p->returnsClasses())
+ {
+ C << nl << "__is->readPendingObjects();";
+ }
C << nl << "__result->__endReadParams();";
}
else
@@ -2303,6 +2307,10 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
{
C << nl << "::IceInternal::BasicStream* __is = __result->__startReadParams();";
writeUnmarshalCode(C, outParams, p, _useWstring | TypeContextAMIPrivateEnd);
+ if(p->returnsClasses())
+ {
+ C << nl << "__is->readPendingObjects();";
+ }
C << nl << "__result->__endReadParams();";
}
else
@@ -2807,6 +2815,10 @@ Slice::Gen::DelegateMVisitor::visitOperation(const OperationPtr& p)
{
C << nl << "::IceInternal::BasicStream* __is = __og.startReadParams();";
writeUnmarshalCode(C, outParams, p);
+ if(p->returnsClasses())
+ {
+ C << nl << "__is->readPendingObjects();";
+ }
C << nl << "__og.endReadParams();";
}
else
@@ -4260,6 +4272,10 @@ Slice::Gen::ObjectVisitor::visitOperation(const OperationPtr& p)
C << nl << "::IceInternal::BasicStream* __is = __inS.startReadParams();";
writeAllocateCode(C, inParams, 0, _useWstring | TypeContextInParam);
writeUnmarshalCode(C, inParams, 0, TypeContextInParam);
+ if(p->sendsClasses())
+ {
+ C << nl << "__is->readPendingObjects();";
+ }
C << nl << "__inS.endReadParams();";
}
else
@@ -4318,6 +4334,10 @@ Slice::Gen::ObjectVisitor::visitOperation(const OperationPtr& p)
C << nl << "::IceInternal::BasicStream* __is = __inS.startReadParams();";
writeAllocateCode(C, inParams, 0, _useWstring | TypeContextInParam);
writeUnmarshalCode(C, inParams, 0, TypeContextInParam);
+ if(p->sendsClasses())
+ {
+ C << nl << "__is->readPendingObjects();";
+ }
C << nl << "__inS.endReadParams();";
}
else