diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llviewerobject.cpp | 9 | ||||
| -rw-r--r-- | indra/newview/llvoavatarself.cpp | 8 | 
2 files changed, 13 insertions, 4 deletions
| diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 886f1d9ef5..d0afa9d9de 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -4019,9 +4019,14 @@ LLBBox LLViewerObject::getBoundingBoxAgent() const  {  	LLVector3 position_agent;  	LLQuaternion rot; +	LLViewerObject* avatar_parent = NULL;  	LLViewerObject* root_edit = (LLViewerObject*)getRootEdit(); -	LLViewerObject* avatar_parent = (LLViewerObject*)root_edit->getParent(); -	if (avatar_parent && avatar_parent->isAvatar() && root_edit->mDrawable.notNull()) +	if (root_edit) +	{ +		avatar_parent = (LLViewerObject*)root_edit->getParent(); +	} +	 +	if (avatar_parent && avatar_parent->isAvatar() && root_edit && root_edit->mDrawable.notNull())  	{  		LLXform* parent_xform = root_edit->mDrawable->getXform()->getParent();  		position_agent = (getPositionEdit() * parent_xform->getWorldRotation()) + parent_xform->getWorldPosition(); diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index b1ea8a1bbb..13e28b246a 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -510,8 +510,12 @@ BOOL LLVOAvatarSelf::buildMenus()  LLVOAvatarSelf::~LLVOAvatarSelf()  { -	gAgent.setAvatarObject(NULL); -	gAgentWearables.setAvatarObject(NULL); +	// gAgents pointer might have been set to a different Avatar Self, don't get rid of it if so. +	if (gAgent.getAvatarObject() == this) +	{ +		gAgent.setAvatarObject(NULL); +		gAgentWearables.setAvatarObject(NULL); +	}  	delete mScreenp;  	mScreenp = NULL;  } | 
