Skip to content

Commit 9b93bad

Browse files
Vladimir Sitnikovjlink
authored andcommitted
fix: use try-with-resources for ObjectOutputStream to ensure all the data is written
Previously, ObjectOutputStream could silently buffer data in the internal buffers
1 parent 99cbb4d commit 9b93bad

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

api/src/main/java/net/jqwik/api/support/LambdaSupport.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,9 @@ public static <T> boolean areEqual(T l1, T l2) {
9292

9393
private static <T> byte[] serialize(T l1) throws IOException {
9494
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
95-
ObjectOutputStream outputStream = new ObjectOutputStream(byteArrayOutputStream);
96-
outputStream.writeObject(l1);
95+
try (ObjectOutputStream outputStream = new ObjectOutputStream(byteArrayOutputStream);) {
96+
outputStream.writeObject(l1);
97+
}
9798
return byteArrayOutputStream.toByteArray();
9899
}
99100

engine/src/test/java/net/jqwik/engine/execution/GenerationInfoTests.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,9 @@ void resetByteArrayOutputStream() {
162162
void serializeWithEmptyShrinkingSequence() throws Exception {
163163
GenerationInfo generationInfo = new GenerationInfo("4242", 41);
164164

165-
outputStream().writeObject(generationInfo);
165+
try (ObjectOutputStream os = outputStream();) {
166+
os.writeObject(generationInfo);
167+
}
166168

167169
// System.out.println("### size: " + byteArrayOutputStream.toByteArray().length);
168170

@@ -175,7 +177,9 @@ void serializeWithShortShrinkingSequence(@ForAll("shrinkingSequence") @Size(max
175177
GenerationInfo generationInfo = new GenerationInfo("4242", 41)
176178
.appendShrinkingSequence(sequence);
177179

178-
outputStream().writeObject(generationInfo);
180+
try (ObjectOutputStream os = outputStream();) {
181+
os.writeObject(generationInfo);
182+
}
179183

180184
// System.out.println("### size: " + byteArrayOutputStream.toByteArray().length);
181185

@@ -190,7 +194,9 @@ void serializeWithSeveralShrinkingSequences(@ForAll @Size(3) List<@Size(max = 10
190194
generationInfo = generationInfo.appendShrinkingSequence(sequence);
191195
}
192196

193-
outputStream().writeObject(generationInfo);
197+
try (ObjectOutputStream os = outputStream();) {
198+
os.writeObject(generationInfo);
199+
}
194200

195201
// System.out.println("### size: " + byteArrayOutputStream.toByteArray().length);
196202

@@ -203,7 +209,9 @@ void serializeWithLongShrinkingSequence(@ForAll("shrinkingSequence") @Size(min =
203209
GenerationInfo generationInfo = new GenerationInfo("4242", 41)
204210
.appendShrinkingSequence(sequence);
205211

206-
outputStream().writeObject(generationInfo);
212+
try (ObjectOutputStream os = outputStream();) {
213+
os.writeObject(generationInfo);
214+
}
207215

208216
// System.out.printf("### size: %s (%s)%n", sequence.size(), byteArrayOutputStream.toByteArray().length);
209217

0 commit comments

Comments
 (0)