diff -r c39560199302 src/core/model/object.cc --- a/src/core/model/object.cc Wed Mar 30 16:42:29 2011 +0200 +++ b/src/core/model/object.cc Wed Mar 30 17:31:09 2011 +0200 @@ -85,7 +85,8 @@ m_disposed (false), m_started (false), m_aggregates ((struct Aggregates *)malloc (sizeof (struct Aggregates))), - m_getObjectCount (0) + m_getObjectCount (0), + m_disposeAlreadyCalled (false) { m_aggregates->n = 1; m_aggregates->buffer[0] = this; @@ -118,7 +119,8 @@ m_disposed (false), m_started (false), m_aggregates ((struct Aggregates *)malloc (sizeof (struct Aggregates))), - m_getObjectCount (0) + m_getObjectCount (0), + m_disposeAlreadyCalled (false) { m_aggregates->n = 1; m_aggregates->buffer[0] = this; @@ -189,6 +191,8 @@ void Object::Dispose (void) { + NS_ASSERT_MSG (!m_disposeAlreadyCalled, "Dispose () has already been called on this object"); + m_disposeAlreadyCalled = true; /** * Note: the code here is a bit tricky because we need to protect ourselves from * modifications in the aggregate array while DoDispose is called. The user's diff -r c39560199302 src/core/model/object.h --- a/src/core/model/object.h Wed Mar 30 16:42:29 2011 +0200 +++ b/src/core/model/object.h Wed Mar 30 17:31:09 2011 +0200 @@ -304,6 +304,12 @@ * of the array the most-frequently accessed elements. */ uint32_t m_getObjectCount; + + /** + * used to make sure that Dispose () is not called twice on the same object. + * + */ + bool m_disposeAlreadyCalled; }; /**