Manually pull fix for MAINT-8279 Fix for crash on unset pcode
parent
035011777c
commit
e3c05a5d88
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue