diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp
index 3cef382bbf065295b2df75269cb54f4592ce5921..d95ec159f2bdb98f1936401df4539fdd5a6118ee 100644
--- a/indra/llcharacter/llkeyframemotion.cpp
+++ b/indra/llcharacter/llkeyframemotion.cpp
@@ -497,13 +497,20 @@ LLMotion::LLMotionInitStatus LLKeyframeMotion::onInitialize(LLCharacter *charact
 		// request asset
 		mAssetStatus = ASSET_FETCHED;
 
-        LL_DEBUGS("Animation") << "Requesting data fetch for: " << mID << LL_ENDL;
-		character_id = new LLUUID(mCharacter->getID());
-		gAssetStorage->getAssetData(mID,
-						LLAssetType::AT_ANIMATION,
-						onLoadComplete,
-						(void *)character_id,
-						FALSE);
+        if (mID.notNull())
+        {
+            LL_DEBUGS("Animation") << "Requesting data fetch for: " << mID << LL_ENDL;
+            character_id = new LLUUID(mCharacter->getID());
+            gAssetStorage->getAssetData(mID,
+                                        LLAssetType::AT_ANIMATION,
+                                        onLoadComplete,
+                                        (void*)character_id,
+                                        FALSE);
+        }
+        else
+        {
+            LL_INFOS("Animation") << "Attempted to fetch animation " << mName << " with null id for character " << mCharacter->getID() << LL_ENDL;
+        }
 
 		return STATUS_HOLD;
 	case ASSET_FETCHED:
diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp
index 48bf5bb80ff3a6e14130d1a7967c6cfcd7da0fc6..220f5ee825ee29d61645275dd96b6cc5721ba0c3 100644
--- a/indra/llui/lldraghandle.cpp
+++ b/indra/llui/lldraghandle.cpp
@@ -68,6 +68,7 @@ LLDragHandle::LLDragHandle(const LLDragHandle::Params& p)
 
 LLDragHandle::~LLDragHandle()
 {
+    gFocusMgr.removeKeyboardFocusWithoutCallback(this);
 	removeChild(mTitleBox);
 	delete mTitleBox;
 }
diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp
index e2b5279aab60e7f4e4078ed79508cccef52f95fd..5319af1b602773d26f8dfd4d6713c0d645096f2e 100644
--- a/indra/llui/llfolderviewitem.cpp
+++ b/indra/llui/llfolderviewitem.cpp
@@ -177,6 +177,7 @@ LLFolderViewItem::LLFolderViewItem(const LLFolderViewItem::Params& p)
 LLFolderViewItem::~LLFolderViewItem()
 {
 	mViewModelItem = NULL;
+    gFocusMgr.removeKeyboardFocusWithoutCallback(this);
 }
 
 BOOL LLFolderViewItem::postBuild()
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index ae9dba5945ffa4d9818dbb9678a665dc3f4b7f0b..7b22f9dbdc29dacdff61a61815d99e92e875cdaf 100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
@@ -89,6 +89,8 @@ LLLayoutPanel::~LLLayoutPanel()
 	// probably not necessary, but...
 	delete mResizeBar;
 	mResizeBar = NULL;
+
+    gFocusMgr.removeKeyboardFocusWithoutCallback(this);
 }
 
 F32 LLLayoutPanel::getAutoResizeFactor() const
diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp
index 24794305ac0c42ba895b4a8930ab18c2d4e48623..13ef0fdb7f7826b5582c59874003d366b4922261 100644
--- a/indra/llui/llresizehandle.cpp
+++ b/indra/llui/llresizehandle.cpp
@@ -70,6 +70,11 @@ LLResizeHandle::LLResizeHandle(const LLResizeHandle::Params& p)
 	}
 }
 
+LLResizeHandle::~LLResizeHandle()
+{
+    gFocusMgr.removeKeyboardFocusWithoutCallback(this);
+}
+
 
 BOOL LLResizeHandle::handleMouseDown(S32 x, S32 y, MASK mask)
 {
diff --git a/indra/llui/llresizehandle.h b/indra/llui/llresizehandle.h
index 7541b9e6c06ac534de59deb50555111596bde1cf..ae20ecaa774be08110aa8ace312077a03d73fa93 100644
--- a/indra/llui/llresizehandle.h
+++ b/indra/llui/llresizehandle.h
@@ -45,6 +45,7 @@ class LLResizeHandle : public LLView
 		Params();
 	};
 
+    ~LLResizeHandle();
 protected:
 	LLResizeHandle(const LLResizeHandle::Params&);
 	friend class LLUICtrlFactory;
diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp
index ba80eeb6b6360c96f774b9e734610e585505d700..e914e2121c82300d8944736e0c508e7ba605ce75 100644
--- a/indra/newview/llviewermediafocus.cpp
+++ b/indra/newview/llviewermediafocus.cpp
@@ -63,6 +63,7 @@ LLViewerMediaFocus::~LLViewerMediaFocus()
 {
 	// The destructor for LLSingletons happens at atexit() time, which is too late to do much.
 	// Clean up in cleanupClass() instead.
+    gFocusMgr.removeKeyboardFocusWithoutCallback(this);
 }
 
 void LLViewerMediaFocus::setFocusFace(LLPointer<LLViewerObject> objectp, S32 face, viewer_media_t media_impl, LLVector3 pick_normal)