Skip to content

Commit 14779b1

Browse files
committed
8294717: (bf) DirectByteBuffer constructor will leak if allocating Deallocator or Cleaner fails with OOME
Backport-of: 4cbac40de956974760cf54183b3ba29f0b5ec331
1 parent 57d0a7f commit 14779b1

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,14 @@ class Direct$Type$Buffer$RW$$BO$
134134
} else {
135135
address = base;
136136
}
137-
cleaner = Cleaner.create(this, new Deallocator(base, size, cap));
137+
try {
138+
cleaner = Cleaner.create(this, new Deallocator(base, size, cap));
139+
} catch (Throwable t) {
140+
// Prevent leak if the Deallocator or Cleaner fail for any reason
141+
UNSAFE.freeMemory(base);
142+
Bits.unreserveMemory(size, cap);
143+
throw t;
144+
}
138145
att = null;
139146
#else[rw]
140147
super(cap);

0 commit comments

Comments
 (0)