diff --git a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java index 0206ce009..a60d83381 100755 --- a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java @@ -112,30 +112,9 @@ class VanillaChronicleMap, transient BytesStore ms; transient long headerSize; transient Set> entrySet; - transient InstanceOrBytesToInstance keyBytesToInstance = - new InstanceOrBytesToInstance() { - @Override - public K toInstance(@NotNull ThreadLocalCopies copies, Bytes keyBytes, long size) { - assertNotNull(copies); - BytesReader keyReader = keyReaderProvider.get(copies, originalKeyReader); - return keyReader.read(keyBytes, size); - } - }; - transient InstanceOrBytesToInstance valueBytesToInstance = - new InstanceOrBytesToInstance() { - @Override - public V toInstance(@NotNull ThreadLocalCopies copies, Bytes valueBytes, long size) { - return readValue(copies, valueBytes, null, size); - } - }; - transient InstanceOrBytesToInstance outputValueBytesToInstance = - new InstanceOrBytesToInstance() { - @Override - public V toInstance(@NotNull ThreadLocalCopies copies, Bytes outputBytes, long size) { - outputBytes.position(outputBytes.position() - size); - return readValue(copies, outputBytes, null, size); - } - }; + transient InstanceOrBytesToInstance keyBytesToInstance; + transient InstanceOrBytesToInstance valueBytesToInstance; + transient InstanceOrBytesToInstance outputValueBytesToInstance; public VanillaChronicleMap(ChronicleMapBuilder builder) { @@ -321,7 +300,6 @@ class VanillaChronicleMap, Segment[] ss = (Segment[]) Array.newInstance(segmentType(), actualSegments); this.segments = ss; - keyBytesToInstance = new InstanceOrBytesToInstance() { @Override @@ -2366,9 +2344,16 @@ class VanillaChronicleMap, if (bytesEventListener != null) bytesEventListener.onPut(entry, 0L, metaDataBytes, valueSizePos, false, remote); if (eventListener != null) { - eventListener.onPut(toKey.toInstance(copies, key, keySize), - toValue.toInstance(copies, value, valueSize), prevValueInstance, remote, - entryIsDeleted); + + try { + eventListener.onPut(toKey.toInstance(copies, key, keySize), + toValue.toInstance(copies, value, valueSize), prevValueInstance, remote, + entryIsDeleted); + } catch (NullPointerException e) { + eventListener.onPut(toKey.toInstance(copies, key, keySize), + toValue.toInstance(copies, value, valueSize), prevValueInstance, remote, + entryIsDeleted); + } } return resultUnused ? null : prevValue;