From ebeed7664325aa49ef5f97f79e97529928b27470 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 8 Dec 2010 09:54:23 +0000 Subject: [PATCH] Added protection against the Registry from being deleted prior to the proxy objects unregistering themselves --- src/osgDB/ObjectWrapper.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/osgDB/ObjectWrapper.cpp b/src/osgDB/ObjectWrapper.cpp index 33d6ee9d7..50182fd40 100644 --- a/src/osgDB/ObjectWrapper.cpp +++ b/src/osgDB/ObjectWrapper.cpp @@ -265,12 +265,19 @@ RegisterWrapperProxy::RegisterWrapperProxy( osg::Object* proto, const std::strin { _wrapper = new ObjectWrapper( proto, name, associates ); if ( func ) (*func)( _wrapper.get() ); - Registry::instance()->getObjectWrapperManager()->addWrapper( _wrapper.get() ); + + if (Registry::instance()) + { + Registry::instance()->getObjectWrapperManager()->addWrapper( _wrapper.get() ); + } } RegisterWrapperProxy::~RegisterWrapperProxy() { - Registry::instance()->getObjectWrapperManager()->removeWrapper( _wrapper.get() ); + if (Registry::instance()) + { + Registry::instance()->getObjectWrapperManager()->removeWrapper( _wrapper.get() ); + } } //////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -609,10 +616,16 @@ RegisterCompressorProxy::RegisterCompressorProxy( const std::string& name, BaseC _compressor(compressor) { _compressor->setName( name ); - Registry::instance()->getObjectWrapperManager()->addCompressor( _compressor.get() ); + if (Registry::instance()) + { + Registry::instance()->getObjectWrapperManager()->addCompressor( _compressor.get() ); + } } RegisterCompressorProxy::~RegisterCompressorProxy() { - Registry::instance()->getObjectWrapperManager()->removeCompressor( _compressor.get() ); + if (Registry::instance()) + { + Registry::instance()->getObjectWrapperManager()->removeCompressor( _compressor.get() ); + } }