Skip to content

Commit 147e981

Browse files
committed
Fix race condition making it possible to return a non-ready future from BlueNBT
1 parent ce2be84 commit 147e981

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/main/java/de/bluecolored/bluenbt/BlueNBT.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ public <U> Optional<? extends InstanceCreator<U>> create(TypeToken<U> createType
165165
@SuppressWarnings("unchecked")
166166
public <T> TypeSerializer<T> getTypeSerializer(TypeToken<T> type) {
167167
TypeSerializer<T> serializer = (TypeSerializer<T>) typeSerializerMap.get(type);
168-
if (serializer != null) return serializer;
168+
if (serializer != null && (!(serializer instanceof FutureTypeSerializer))) return serializer;
169169

170170
synchronized (this) {
171171
serializer = (TypeSerializer<T>) typeSerializerMap.get(type);
@@ -196,7 +196,7 @@ public <T> TypeSerializer<T> getTypeSerializer(TypeToken<T> type) {
196196
@SuppressWarnings("unchecked")
197197
public <T> TypeDeserializer<T> getTypeDeserializer(TypeToken<T> type) {
198198
TypeDeserializer<T> deserializer = (TypeDeserializer<T>) typeDeserializerMap.get(type);
199-
if (deserializer != null) return deserializer;
199+
if (deserializer != null && (!(deserializer instanceof FutureTypeDeserializer))) return deserializer;
200200

201201
synchronized (this) {
202202
deserializer = (TypeDeserializer<T>) typeDeserializerMap.get(type);
@@ -227,7 +227,7 @@ public <T> TypeDeserializer<T> getTypeDeserializer(TypeToken<T> type) {
227227
@SuppressWarnings("unchecked")
228228
public <T> InstanceCreator<T> getInstanceCreator(TypeToken<T> type) {
229229
InstanceCreator<T> instanceCreator = (InstanceCreator<T>) instanceCreatorMap.get(type);
230-
if (instanceCreator != null) return instanceCreator;
230+
if (instanceCreator != null && (!(instanceCreator instanceof FutureInstanceCreator))) return instanceCreator;
231231

232232
synchronized (this) {
233233
instanceCreator = (InstanceCreator<T>) instanceCreatorMap.get(type);

0 commit comments

Comments
 (0)