From 83237f875cb26d9f72055a5d47cdb928b30c0dc6 Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Mon, 23 Nov 2009 10:15:00 -0800
Subject: [PATCH] Allow large paramblocks by converting mEnclosingBlockOffset
 to U16, needed for location_input.xml

---
 indra/llxuixml/llinitparam.cpp | 2 +-
 indra/llxuixml/llinitparam.h   | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp
index 318a0348a2a..4c050844f86 100644
--- a/indra/llxuixml/llinitparam.cpp
+++ b/indra/llxuixml/llinitparam.cpp
@@ -46,7 +46,7 @@ namespace LLInitParam
 	{
 		const U8* my_addr = reinterpret_cast<const U8*>(this);
 		const U8* block_addr = reinterpret_cast<const U8*>(enclosing_block);
-		mEnclosingBlockOffset = (S16)(block_addr - my_addr);
+		mEnclosingBlockOffset = (U16)(my_addr - block_addr);
 	}
 
 	//
diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h
index 9fb464ca7b9..b563c6fe512 100644
--- a/indra/llxuixml/llinitparam.h
+++ b/indra/llxuixml/llinitparam.h
@@ -300,14 +300,14 @@ namespace LLInitParam
 			const U8* my_addr = reinterpret_cast<const U8*>(this);
 			// get address of enclosing BLOCK class using stored offset to enclosing BaseBlock class
 			return *const_cast<BaseBlock*>(
-							reinterpret_cast<const BaseBlock*>(my_addr + (ptrdiff_t)mEnclosingBlockOffset));
+							reinterpret_cast<const BaseBlock*>(my_addr - (ptrdiff_t)mEnclosingBlockOffset));
 		}
 
 	private:
 		friend class BaseBlock;
 
 		bool		mIsProvided;
-		S16			mEnclosingBlockOffset;
+		U16			mEnclosingBlockOffset;
 	};
 
 	// various callbacks and constraints associated with an individual param
-- 
GitLab