Skip to content

Commit 1c49293

Browse files
committed
Use try finally to make sure memory access restored
1 parent 78b6fc5 commit 1c49293

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

core/src/main/kotlin/io/github/rothes/esu/core/util/UnsafeUtils.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@ object UnsafeUtils {
2020
val newHeader = Runtime.version().version().first() >= 24 && ManagementFactory.getRuntimeMXBean().inputArguments.contains("-XX:+UseCompactObjectHeaders")
2121
val accessibleOffset = if (newHeader) 8L else 12L
2222
val bool = unsafe.getBoolean(internalOffsetMethod, accessibleOffset)
23-
unsafe.putBoolean(internalOffsetMethod, accessibleOffset, true) // Make it accessible
24-
internalOffset = internalOffsetMethod.handle(pType = Any::class.java) // This checks for accessible when we get it
25-
unsafe.putBoolean(internalOffsetMethod, accessibleOffset, bool) // Set accessible back, we no longer need the hack
23+
try {
24+
unsafe.putBoolean(internalOffsetMethod, accessibleOffset, true) // Make it accessible
25+
internalOffset = internalOffsetMethod.handle(pType = Any::class.java) // This checks for accessible when we get it
26+
} finally {
27+
unsafe.putBoolean(internalOffsetMethod, accessibleOffset, bool) // Set accessible back, we no longer need the hack
28+
}
2629
}
2730

2831
fun <T> Field.usGet(obj: Any?): T {

0 commit comments

Comments
 (0)