I've run into a bit of a problem when using the observer_ptr with multiple inheritance.

I've traced the problem to observer_ptr::objectDeleted:

virtual void objectDeleted(void* ptr)
{
   if (_ptr==ptr)
   {
       _ptr = 0;
   }
}

The two pointers are not always equal when the observer pointer holds a class with multiple inheritance.

So comparison fails and I'm left with a dangling pointer in the observer.

Is the comparison necessary? It looks to me like objectDeleted is only ever called for the object it is holding.

- Edgar


_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to