* Apparently, sometimes texture entries come in from the wire with no default texture defined.. so apply better fallback protection against that. The net result is clients will have their selected textures set when they would have previously had an ignored exception.

0.7.4-extended
teravus 2013-03-08 19:32:47 -05:00 committed by Justin Clark-Casey (justincc)
parent 0793e6df25
commit 5201433d8b
1 changed files with 17 additions and 0 deletions

View File

@ -4301,8 +4301,25 @@ namespace OpenSim.Region.Framework.Scenes
Changed changeFlags = 0; Changed changeFlags = 0;
Primitive.TextureEntryFace fallbackNewFace = newTex.DefaultTexture;
Primitive.TextureEntryFace fallbackOldFace = oldTex.DefaultTexture;
// On Incoming packets, sometimes newText.DefaultTexture is null. The assumption is that all
// other prim-sides are set, but apparently that's not always the case. Lets assume packet/data corruption at this point.
if (fallbackNewFace == null)
{
fallbackNewFace = new Primitive.TextureEntry(Util.BLANK_TEXTURE_UUID).CreateFace(0);
newTex.DefaultTexture = fallbackNewFace;
}
if (fallbackOldFace == null)
{
fallbackOldFace = new Primitive.TextureEntry(Util.BLANK_TEXTURE_UUID).CreateFace(0);
oldTex.DefaultTexture = fallbackOldFace;
}
for (int i = 0 ; i < GetNumberOfSides(); i++) for (int i = 0 ; i < GetNumberOfSides(); i++)
{ {
Primitive.TextureEntryFace newFace = newTex.DefaultTexture; Primitive.TextureEntryFace newFace = newTex.DefaultTexture;
Primitive.TextureEntryFace oldFace = oldTex.DefaultTexture; Primitive.TextureEntryFace oldFace = oldTex.DefaultTexture;