[kotlin] fix NPE from lockWithPCECheck when action lambda returns a nullable value
This commit is contained in:
+2
-6
@@ -25,21 +25,17 @@ internal inline fun <T> executeWithoutPCE(crossinline action: () -> T): T {
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal inline fun <T> Lock.lockWithPCECheck(lockingIntervalMs: Long, action: () -> T): T {
|
internal inline fun <T> Lock.lockWithPCECheck(lockingIntervalMs: Long, action: () -> T): T {
|
||||||
var needToRun = true
|
while (true) {
|
||||||
var result: T? = null
|
|
||||||
while (needToRun) {
|
|
||||||
checkCanceled()
|
checkCanceled()
|
||||||
if (tryLock(lockingIntervalMs, TimeUnit.MILLISECONDS)) {
|
if (tryLock(lockingIntervalMs, TimeUnit.MILLISECONDS)) {
|
||||||
try {
|
try {
|
||||||
checkCanceled()
|
checkCanceled()
|
||||||
needToRun = false
|
return action()
|
||||||
result = action()
|
|
||||||
} finally {
|
} finally {
|
||||||
unlock()
|
unlock()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result!!
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("NOTHING_TO_INLINE")
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
|
|||||||
Reference in New Issue
Block a user