diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp
index d3fd5813a03ab6b04f2df321fbd77e544dccd6c7..0f02c23cb04398edda49568374f0bca0d8acfcca 100644
--- a/indra/newview/llcontrolavatar.cpp
+++ b/indra/newview/llcontrolavatar.cpp
@@ -60,6 +60,8 @@ LLControlAvatar::LLControlAvatar(const LLUUID& id, const LLPCode pcode, LLViewer
 // virtual
 LLControlAvatar::~LLControlAvatar()
 {
+	// Should already have been unlinked before destruction
+	llassert(!mRootVolp);
 }
 
 // virtual
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 007adf2a72b47494691e626bc478917cd6d79794..ec1095813bffb671cde002a9846e1e183384b01d 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -3100,6 +3100,7 @@ void LLViewerObject::unlinkControlAvatar()
         if (mControlAvatar)
         {
             mControlAvatar->markForDeath();
+			mControlAvatar->mRootVolp = NULL;
             mControlAvatar = NULL;
         }
     }