From efd7e582bda13138e11a42e3d48347bb5bec4945 Mon Sep 17 00:00:00 2001
From: Adam Moss <moss@lindenlab.com>
Date: Mon, 28 Sep 2009 19:43:16 +0000
Subject: [PATCH] DEV-40396 Error building pluginapi code on Linux 64bit
 standalone gcc 4.3.3.

rewritten the plugin address-splitting to make compilers grumble less and probably more readable.
code by merov, reviewed by moss.
---
 indra/llplugin/llpluginprocesschild.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp
index 293dea6fe19..dc516710328 100644
--- a/indra/llplugin/llpluginprocesschild.cpp
+++ b/indra/llplugin/llpluginprocesschild.cpp
@@ -319,8 +319,8 @@ void LLPluginProcessChild::receiveMessageRaw(const std::string &message)
 						message.setValueS32("size", (S32)size);
 						// shm address is split into 2x32bit values because LLSD doesn't serialize 64bit values and we need to support 64-bit addressing.
 						void * address = region->getMappedAddress();
-						U32 address_lo = (U32)address;
-						U32 address_hi = (U32)(U64(address) / (U64(1)<<31));
+						U32 address_lo = (U32)(U64(address) & 0xFFFFFFFF);			// Extract the lower 32 bits
+						U32 address_hi = (U32)((U64(address)>>32) & 0xFFFFFFFF);	// Extract the higher 32 bits 
 						message.setValueU32("address", address_lo);
 						message.setValueU32("address_1", address_hi);
 						sendMessageToPlugin(message);
-- 
GitLab