diff options
author | Tobias Holgers <tholgers@users.sourceforge.net> | 2009-06-30 17:27:55 +0000 |
---|---|---|
committer | Tobias Holgers <tholgers@users.sourceforge.net> | 2009-06-30 17:27:55 +0000 |
commit | ddad54db7b38b9b919ef59dc988c1b2194fa184c (patch) | |
tree | 4054184cfb9e81db21b0f4eca2b6673b7b4e134d /src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java | |
parent | be265775e90f926715d7a9f74963fa517f83a8bc (diff) |
Always clone single byte array properties as some implementations reuse the array for cursors (e.g. BDB-C 4.6).
Diffstat (limited to 'src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java')
-rw-r--r-- | src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java b/src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java index b7356d7..dcc8d45 100644 --- a/src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java +++ b/src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java @@ -1906,7 +1906,10 @@ public class GenericEncodingStrategy<S extends Storable> { a.invokeStatic(DataDecoder.class.getName(), "decodeSingle",
byteArrayType, params);
} else {
- // Just store raw property value.
+ // Always clone the byte array as some implementations
+ // reuse the byte array (e.g. iterating using a cursor).
+ a.invokeVirtual(TypeDesc.OBJECT, "clone", TypeDesc.OBJECT, null);
+ a.checkCast(byteArrayType);
}
storePropertyValue(a, info, useWriteMethods, instanceVar, adapterInstanceClass);
|