From 5269fc0e04984b2d196d5eaf96e206e034d21184 Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Fri, 20 Aug 2010 13:58:20 +0000 Subject: QPID-2798 - C++ Messaging Client .NET binding fails to clone managed objects correctly Patch from Chuck Rolke git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@987510 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/bindings/qpid/dotnet/src/Message.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'cpp/bindings/qpid/dotnet/src/Message.h') diff --git a/cpp/bindings/qpid/dotnet/src/Message.h b/cpp/bindings/qpid/dotnet/src/Message.h index c7f6092a40..cbe8cfc7ab 100644 --- a/cpp/bindings/qpid/dotnet/src/Message.h +++ b/cpp/bindings/qpid/dotnet/src/Message.h @@ -69,15 +69,15 @@ namespace Messaging { // Create from byte array slice Message(array ^ bytes, int offset, int size); - // Create from received message - Message(::qpid::messaging::Message * msgp); - ~Message(); !Message(); // Copy constructor Message(const Message ^ message); + // unmanaged clone + Message(const ::qpid::messaging::Message & msgp); + // assignment operator Message % operator=(const Message % rhs) { @@ -87,7 +87,8 @@ namespace Messaging { } else { - delete messagep; + if (NULL != messagep) + delete messagep; messagep = new ::qpid::messaging::Message( *(const_cast(rhs).NativeMessage) ); } @@ -117,7 +118,7 @@ namespace Messaging { const ::qpid::messaging::Address & addrp = messagep->::qpid::messaging::Message::getReplyTo(); - return gcnew Address(const_cast<::qpid::messaging::Address *>(&addrp)); + return gcnew Address(addrp); } } @@ -299,6 +300,7 @@ namespace Messaging { gcnew System::Collections::Generic::Dictionary< System::String^, System::Object^> ; + TypeTranslator::NativeToManaged(map, dict); return dict; -- cgit v1.2.1