Manually pull fix for MAINT-8279 Fix for crash on unset pcode

master
Ansariel 2018-02-12 18:12:41 +01:00
parent 035011777c
commit e3c05a5d88
2 changed files with 20 additions and 12 deletions

View File

@ -524,15 +524,25 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
{
U32 flags = 0;
mesgsys->getU32Fast(_PREHASH_ObjectData, _PREHASH_UpdateFlags, flags, i);
if(flags & FLAGS_TEMPORARY_ON_REZ)
compressed_dp.unpackUUID(fullid, "ID");
compressed_dp.unpackU32(local_id, "LocalID");
compressed_dp.unpackU8(pcode, "PCode");
if (pcode == 0)
{
compressed_dp.unpackUUID(fullid, "ID");
compressed_dp.unpackU32(local_id, "LocalID");
compressed_dp.unpackU8(pcode, "PCode");
}
else //send to object cache
// object creation will fail, LLViewerObject::createObject()
LL_WARNS() << "Received object " << fullid
<< " with 0 PCode. Local id: " << local_id
<< " Flags: " << flags
<< " Region: " << regionp->getName()
<< " Region id: " << regionp->getRegionID() << LL_ENDL;
recorder.objectUpdateFailure(local_id, update_type, msg_size);
continue;
}
else if ((flags & FLAGS_TEMPORARY_ON_REZ) == 0)
{
//send to object cache
regionp->cacheFullUpdate(compressed_dp, flags);
continue;
}

View File

@ -753,9 +753,7 @@ void LLViewerPartSim::updateSimulation()
LLViewerObject* vobj = mViewerPartGroups[i]->mVOPartGroupp;
S32 visirate = 1;
// <FS:CR> FIRE-11593: Opensim "4096 Bug" Fix by Latif Khalifa
//if (vobj)
if (vobj && vobj->mDrawable)
if (vobj && !vobj->isDead() && vobj->mDrawable && !vobj->mDrawable->isDead())
{
LLSpatialGroup* group = vobj->mDrawable->getSpatialGroup();
if (group && !group->isVisible()) // && !group->isState(LLSpatialGroup::OBJECT_DIRTY))
@ -767,8 +765,8 @@ void LLViewerPartSim::updateSimulation()
if ((LLDrawable::getCurrentFrame()+mViewerPartGroups[i]->mID)%visirate == 0)
{
// <FS:CR> FIRE-11593: Opensim "4096 Bug" Fix by Latif Khalifa
// <vobj)
if (vobj && vobj->mDrawable)
// <vobj && !vobj->isDead())
if (vobj && !vobj->isDead() && vobj->mDrawable)
{
gPipeline.markRebuild(vobj->mDrawable, LLDrawable::REBUILD_ALL, TRUE);
}