diff --git a/src/obj/NiTimeController.cpp b/src/obj/NiTimeController.cpp index 119dd5a1d83645d6162e368c91c7aaaa55fb1a10..6c0f3617115754f9e4ddac2eef9dfb827ad53736 100644 --- a/src/obj/NiTimeController.cpp +++ b/src/obj/NiTimeController.cpp @@ -86,12 +86,18 @@ void NiTimeController::Write( ostream& out, const map<NiObjectRef,unsigned int> if ( info.version < VER_3_3_0_13 ) { WritePtr32( &(*target), out ); } else { - if ( target != NULL ) { - NifStream( link_map.find( StaticCast<NiObject>(target) )->second, out, info ); - } else { - NifStream( 0xFFFFFFFF, out, info ); - } - } + if ( target != NULL ) { + map<NiObjectRef,unsigned int>::const_iterator it = link_map.find( StaticCast<NiObject>(target) ); + if (it != link_map.end()) { + NifStream( it->second, out, info ); + } else { + //std::cerr << "warning: referenced block not in tree; omitting" << std::endl; + NifStream( 0xFFFFFFFF, out, info ); + } + } else { + NifStream( 0xFFFFFFFF, out, info ); + } + } }; if ( info.version <= 0x03010000 ) { NifStream( unknownInteger, out, info );