summaryrefslogtreecommitdiff
path: root/indra/llplugin
diff options
context:
space:
mode:
authorAdam Moss <moss@lindenlab.com>2009-09-28 19:43:16 +0000
committerAdam Moss <moss@lindenlab.com>2009-09-28 19:43:16 +0000
commitefd7e582bda13138e11a42e3d48347bb5bec4945 (patch)
tree0a3cf667ec9b5d93dc6a8b363306029cbeccb9dd /indra/llplugin
parent423cba155adc5ed68a6221001d779b3732cebd27 (diff)
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.
Diffstat (limited to 'indra/llplugin')
-rw-r--r--indra/llplugin/llpluginprocesschild.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp
index 293dea6fe1..dc51671032 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);