diff --git a/cpp/src/Slice/CsUtil.cpp b/cpp/src/Slice/CsUtil.cpp index 0f4ff68..f96205a 100755 --- a/cpp/src/Slice/CsUtil.cpp +++ b/cpp/src/Slice/CsUtil.cpp @@ -808,13 +808,14 @@ Slice::CsGenerator::writeSequenceMarshalUnmarshalCode(Output& out, out << nl << stream << ".writeSize(" << param << '.' << limitID << ");"; out << nl << "for(int ix__ = 0; ix__ < " << param << '.' << limitID << "; ++ix__)"; out << sb; - if(streamingAPI) + if(!isValueType(type)) { - out << nl << param << "[ix__].ice_write(" << stream << ");"; + out << nl << "(" << param << "[ix__] == null ? new " << typeS << "() : " + << param << "[ix__])." << (streamingAPI ? "ice_write" : "write__") << "(" << stream << ");"; } else { - out << nl << param << "[ix__].write__(" << stream << ");"; + out << nl << param << "[ix__]." << (streamingAPI ? "ice_write" : "write__") << "(" << stream << ");"; } out << eb; out << eb;