diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Slice/CPlusPlusUtil.cpp | 5 | ||||
-rw-r--r-- | cpp/src/slice2cpp/Gen.cpp | 3 |
2 files changed, 5 insertions, 3 deletions
diff --git a/cpp/src/Slice/CPlusPlusUtil.cpp b/cpp/src/Slice/CPlusPlusUtil.cpp index bc744762e34..16cfbe6edf5 100644 --- a/cpp/src/Slice/CPlusPlusUtil.cpp +++ b/cpp/src/Slice/CPlusPlusUtil.cpp @@ -360,7 +360,8 @@ Slice::writeMarshalUnmarshalCode(Output& out, const TypePtr& type, const string& SequencePtr seq = SequencePtr::dynamicCast(type); if (seq) { - if (BuiltinPtr::dynamicCast(seq->type())) + BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + if (builtin && builtin->kind() != Builtin::KindObject && builtin->kind() != Builtin::KindObjectProxy) { out << nl << stream << deref << func << param << ");"; } @@ -575,7 +576,7 @@ Slice::writeGenericMarshalUnmarshalCode(Output& out, const TypePtr& type, const if (seq) { BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); - if (builtin) + if (builtin && builtin->kind() != Builtin::KindObject && builtin->kind() != Builtin::KindObjectProxy) { if (marshal) { diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index 679fa5ce774..3291133b600 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -597,7 +597,8 @@ Slice::Gen::TypesVisitor::visitSequence(const SequencePtr& p) H << sp << nl << "typedef ::std::vector<" << s << "> " << name << ';'; BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); - if (!builtin && !p->isLocal()) + if (!p->isLocal() && + (!builtin || builtin->kind() == Builtin::KindObject || builtin->kind() == Builtin::KindObjectProxy)) { string scoped = p->scoped(); string scope = p->scope(); |