Index: source/ariba/utility/transport/messages/message.hpp
===================================================================
--- source/ariba/utility/transport/messages/message.hpp	(revision 12060)
+++ source/ariba/utility/transport/messages/message.hpp	(revision 12773)
@@ -11,4 +11,5 @@
 #include<boost/shared_ptr.hpp>
 #include<cstring>
+#include <cassert>
 
 #include "shared_buffer.hpp"
@@ -68,11 +69,19 @@
 	/// Create a new message
 	inline message_t() :
-		imsg() {
+		imsg(),
+		MAGIC_IDENTIFIER("!!message_t-MAGIC_IDENTIFIER!!"), // XXX Mario: Debugging
+		MAGIC_NUMBER(421337) // XXX Mario: Debugging
+	{
 	}
 
 	/// Copy message
 	inline message_t(const message_t& msg) :
-		imsg(msg.imsg)
+		imsg(msg.imsg),
+		MAGIC_IDENTIFIER(msg.MAGIC_IDENTIFIER),  // XXX
+		MAGIC_NUMBER(msg.MAGIC_NUMBER) // XXX
+
 	{
+		assert ( msg.MAGIC_NUMBER == 421337 ); // XXX
+		
 	    if ( imsg )
 	        imsg->owner = NULL;
@@ -85,7 +94,19 @@
 
 	/// Assign another message
-	inline message_t& operator=(const message_t& msg) {
-		msg.imsg->owner = NULL;
-		imsg = msg.imsg;
+	inline message_t& operator=(const message_t& msg)
+	{
+		assert ( msg.MAGIC_NUMBER == 421337 ); // XXX
+		
+		if ( msg.imsg )
+		{
+			msg.imsg->owner = NULL;
+			imsg = msg.imsg;
+		}
+		else
+		{
+			// TODO: is this a valid state? (since it can definitely been reached...)
+			imsg.reset();
+		}
+		
 		return *this;
 	}
@@ -252,10 +273,22 @@
 		shared_buffer_t buffers[message_max_buffers];
 		mlength_t index, length;
+		
+		// XXX Mario: Debugging
+		const std::string MAGIC_IDENTIFIER;
+		const int MAGIC_NUMBER;
 	public:
 		inline imsg_t() :
-			index(0), length(0) {
+			owner(NULL),
+			index(0),
+			length(0),
+			MAGIC_IDENTIFIER("!!imsg_t-MAGIC_IDENTIFIER!!"), // XXX Mario: Debugging
+			MAGIC_NUMBER(133742)
+		{
 		}
 		inline imsg_t(const imsg_t& imsg) :
-			index(imsg.index), length(imsg.length) {
+			index(imsg.index), length(imsg.length),
+			MAGIC_IDENTIFIER(imsg.MAGIC_IDENTIFIER),  // XXX
+			MAGIC_NUMBER(imsg.MAGIC_NUMBER) // XXX
+		{
 			for (mlength_t i = 0; i < length; i++)
 				at(index + i) = imsg.at(index + i);
@@ -336,4 +369,9 @@
 	}
 	boost::shared_ptr<imsg_t> imsg;
+	
+	// XXX Mario: Debugging
+public:
+	const std::string MAGIC_IDENTIFIER;
+	const int MAGIC_NUMBER;
 };
 
