* 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.

user_profiles
teravus 2013-03-08 19:32:47 -05:00
parent 33dab49d22
commit 5097437e11
1 changed files with 17 additions and 0 deletions

View File

@ -4503,8 +4503,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;