In some cases, when an event is scheduled against a subclass of Object, and if no one owns a reference directly to this object, the object is alive, has a refcount of zero and the method ran when the event expires runs against the raw pointer which means that we are manipulating an object with a refcount of zero. So, we must disable this check. This is really evil but I see no way to work around this.
--- a/src/core/object.cc Tue Jul 03 16:11:40 2007 +0200
+++ b/src/core/object.cc Tue Jul 03 17:05:23 2007 +0200
@@ -118,7 +118,6 @@
Ptr<Object>
Object::DoQueryInterface (InterfaceId iid) const
{
- NS_ASSERT (Check ());
const Object *currentObject = this;
do {
NS_ASSERT (currentObject != 0);