Fix HSHA/offheap_objects corruption

patch by benedict; reviewed by marcus for CASSANDRA-8719


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/708b0ce6
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/708b0ce6
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/708b0ce6

Branch: refs/heads/trunk
Commit: 708b0ce6dab76c94d2fc22726ef8339c754bb857
Parents: 07ffe1b
Author: Benedict Elliott Smith <[email protected]>
Authored: Wed Feb 11 11:21:12 2015 +0000
Committer: Benedict Elliott Smith <[email protected]>
Committed: Wed Feb 11 11:21:12 2015 +0000

----------------------------------------------------------------------
 CHANGES.txt                                                | 1 +
 src/java/org/apache/cassandra/utils/memory/MemoryUtil.java | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/708b0ce6/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 2113349..248139f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -8,6 +8,7 @@ Merged from 2.0:
 
 
 2.1.3
+ * Fix HSHA/offheap_objects corruption (CASSANDRA-8719)
  * Upgrade libthrift to 0.9.2 (CASSANDRA-8685)
  * Don't use the shared ref in sstableloader (CASSANDRA-8704)
  * Purge internal prepared statements if related tables or

http://git-wip-us.apache.org/repos/asf/cassandra/blob/708b0ce6/src/java/org/apache/cassandra/utils/memory/MemoryUtil.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/memory/MemoryUtil.java 
b/src/java/org/apache/cassandra/utils/memory/MemoryUtil.java
index 129a60b..57edc52 100644
--- a/src/java/org/apache/cassandra/utils/memory/MemoryUtil.java
+++ b/src/java/org/apache/cassandra/utils/memory/MemoryUtil.java
@@ -243,7 +243,7 @@ public abstract class MemoryUtil
         if (buffer.isDirect())
             setBytes(unsafe.getLong(buffer, DIRECT_BYTE_BUFFER_ADDRESS_OFFSET) 
+ start, address, count);
         else
-            setBytes(address, buffer.array(), start, count);
+            setBytes(address, buffer.array(), buffer.arrayOffset() + start, 
count);
     }
 
     /**

Reply via email to