From 6f179fc6aca66a8349ca608b34ea7707ff590519 Mon Sep 17 00:00:00 2001
From: Xiaohong Bao <bao@lindenlab.com>
Date: Thu, 25 Mar 2010 17:21:39 -0600
Subject: [PATCH] fix for EXT-5854:Unable to Pay Object That Features
 Transparant (alpha) Texture.

---
 indra/llrender/llimagegl.cpp | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 36ac3ff119a..5edd6c88860 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -1699,8 +1699,8 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in)
 	U32 size = pick_width * pick_height;
 	size = (size + 7) / 8; // pixelcount-to-bits
 	mPickMask = new U8[size];
-	mPickMaskWidth = pick_width;
-	mPickMaskHeight = pick_height;
+	mPickMaskWidth = pick_width - 1;
+	mPickMaskHeight = pick_height - 1;
 
 	memset(mPickMask, 0, sizeof(U8) * size);
 
@@ -1743,20 +1743,20 @@ BOOL LLImageGL::getMask(const LLVector2 &tc)
 			llassert(false);
 		}
 
-		llassert(mPickMaskWidth > 0 && mPickMaskHeight > 0);
+		llassert(mPickMaskWidth >= 0 && mPickMaskHeight >= 0);
 		
 		S32 x = llfloor(u * mPickMaskWidth);
 		S32 y = llfloor(v * mPickMaskHeight);
 
-		if (LL_UNLIKELY(x >= mPickMaskWidth))
+		if (LL_UNLIKELY(x > mPickMaskWidth))
 		{
 			LL_WARNS_ONCE("render") << "Ooh, width overrun on pick mask read, that coulda been bad." << LL_ENDL;
-			x = llmax(0, mPickMaskWidth-1);
+			x = llmax((U16)0, mPickMaskWidth);
 		}
-		if (LL_UNLIKELY(y >= mPickMaskHeight))
+		if (LL_UNLIKELY(y > mPickMaskHeight))
 		{
 			LL_WARNS_ONCE("render") << "Ooh, height overrun on pick mask read, that woulda been bad." << LL_ENDL;
-			y = llmax(0, mPickMaskHeight-1);
+			y = llmax((U16)0, mPickMaskHeight);
 		}
 
 		S32 idx = y*mPickMaskWidth+x;
-- 
GitLab