Defensive checks in SizeMarshallers and possible bugs with marshalling 0, however it could be not supported

This commit is contained in:
leventov
2015-02-09 06:24:26 +07:00
parent 1a2025c4d2
commit 289179a08d
7 changed files with 9 additions and 8 deletions
@@ -89,6 +89,7 @@ public abstract class ByteableMarshaller<E extends Byteable>
@Override
public void writeSize(Bytes bytes, long size) {
assert size == this.size;
// do nothing
}
@@ -58,6 +58,7 @@ public enum DoubleMarshaller implements BytesInterop<Double>, BytesReader<Double
@Override
public void writeSize(Bytes bytes, long size) {
assert size == 8L;
// do nothing
}
@@ -90,6 +90,7 @@ public enum DummyValueMarshaller
@Override
public void writeSize(Bytes bytes, long size) {
assert size == 0L;
// do nothing
}
@@ -56,6 +56,7 @@ public enum IntegerMarshaller
@Override
public void writeSize(Bytes bytes, long size) {
assert size == 4L;
// do nothing
}
@@ -56,6 +56,7 @@ public enum LongMarshaller
@Override
public void writeSize(Bytes bytes, long size) {
assert size == 8L;
// do nothing
}
@@ -98,6 +98,7 @@ public final class SizeMarshallers {
@Override
public void writeSize(Bytes bytes, long size) {
assert size == this.size;
// do nothing
}
@@ -743,13 +743,8 @@ final class ReplicatedChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? supe
return 0;
}
final boolean isDeleted = entry.readBoolean();
long valueSize;
if (!isDeleted) {
valueSize = valueSizeMarshaller.readSize(entry);
} else {
valueSize = 0L;
}
entry.skip(1); // is Deleted
long valueSize = valueSizeMarshaller.readSize(entry);
alignment.alignPositionAddr(entry);
long result = (entry.position() + valueSize - start);
@@ -793,7 +788,7 @@ final class ReplicatedChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? supe
if (!isDeleted) {
valueSize = valueSizeMarshaller.readSize(entry);
} else {
valueSize = 0L;
valueSize = valueSizeMarshaller.minEncodableSize();
}
final long valuePosition = entry.position();