[kotlin] fix NPE from lockWithPCECheck when action lambda returns a nullable value

This commit is contained in:
Ilya Kirillov
2022-12-14 13:02:01 +01:00
parent 65f71cccc9
commit 561df74419
@@ -25,21 +25,17 @@ internal inline fun <T> executeWithoutPCE(crossinline action: () -> T): T {
}
internal inline fun <T> Lock.lockWithPCECheck(lockingIntervalMs: Long, action: () -> T): T {
var needToRun = true
var result: T? = null
while (needToRun) {
while (true) {
checkCanceled()
if (tryLock(lockingIntervalMs, TimeUnit.MILLISECONDS)) {
try {
checkCanceled()
needToRun = false
result = action()
return action()
} finally {
unlock()
}
}
}
return result!!
}
@Suppress("NOTHING_TO_INLINE")