summaryrefslogtreecommitdiff
path: root/cpp/src/slice2freezej/Main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/slice2freezej/Main.cpp')
-rw-r--r--cpp/src/slice2freezej/Main.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/cpp/src/slice2freezej/Main.cpp b/cpp/src/slice2freezej/Main.cpp
index 850b4e845c8..88bf0661753 100644
--- a/cpp/src/slice2freezej/Main.cpp
+++ b/cpp/src/slice2freezej/Main.cpp
@@ -190,6 +190,8 @@ FreezeGenerator::generate(UnitPtr& unit, const Dict& dict)
out << sb;
out << nl << "assert(o instanceof " << typeS << ");";
out << nl << "IceInternal.BasicStream __os = new IceInternal.BasicStream(Ice.Util.getInstance(communicator));";
+ out << nl << "try";
+ out << sb;
iter = 0;
writeMarshalUnmarshalCode(out, "", type, valS, true, iter, false);
out << nl << "java.nio.ByteBuffer __buf = __os.prepareWrite();";
@@ -197,6 +199,11 @@ FreezeGenerator::generate(UnitPtr& unit, const Dict& dict)
out << nl << "__buf.get(__r);";
out << nl << "return __r;";
out << eb;
+ out << nl << "finally";
+ out << sb;
+ out << nl << "__os.destroy();";
+ out << eb;
+ out << eb;
//
// decode
@@ -205,6 +212,8 @@ FreezeGenerator::generate(UnitPtr& unit, const Dict& dict)
<< "(byte[] b, Ice.Communicator communicator)";
out << sb;
out << nl << "IceInternal.BasicStream __is = new IceInternal.BasicStream(Ice.Util.getInstance(communicator));";
+ out << nl << "try";
+ out << sb;
out << nl << "__is.resize(b.length, true);";
out << nl << "java.nio.ByteBuffer __buf = __is.prepareRead();";
out << nl << "__buf.position(0);";
@@ -267,6 +276,11 @@ FreezeGenerator::generate(UnitPtr& unit, const Dict& dict)
}
out << nl << "return __r;";
out << eb;
+ out << nl << "finally";
+ out << sb;
+ out << nl << "__is.destroy();";
+ out << eb;
+ out << eb;
}
out << eb;