diff --git a/plugins/3d/oce/loadmodel.cpp b/plugins/3d/oce/loadmodel.cpp index aeda9a10dd..0a12df55cd 100644 --- a/plugins/3d/oce/loadmodel.cpp +++ b/plugins/3d/oce/loadmodel.cpp @@ -671,24 +671,34 @@ SCENEGRAPH* LoadModel( char const* filename ) data.renderBoth = true; if( !readIGES( data.m_doc, filename ) ) + { + m_app->Close( data.m_doc ); return nullptr; + } break; case FMT_STEP: if( !readSTEP( data.m_doc, filename ) ) + { + m_app->Close( data.m_doc ); return nullptr; + } break; case FMT_STPZ: if( !readSTEPZ( data.m_doc, filename ) ) + { + m_app->Close( data.m_doc ); return nullptr; + } break; default: + m_app->Close( data.m_doc ); return nullptr; break; } @@ -724,7 +734,10 @@ SCENEGRAPH* LoadModel( char const* filename ) } if( !ret ) + { + m_app->Close( data.m_doc ); return nullptr; + } SCENEGRAPH* scene = (SCENEGRAPH*)data.scene; @@ -749,6 +762,8 @@ SCENEGRAPH* LoadModel( char const* filename ) // set to NULL to prevent automatic destruction of the scene data data.scene = nullptr; + m_app->Close( data.m_doc ); + return scene; }