From d464d000675dc5db4fc0c7d2ef591761c4854bf9 Mon Sep 17 00:00:00 2001 From: tarsin Date: Mon, 29 May 2023 20:04:15 +0800 Subject: [PATCH] Fix usingCancellable with null ret value --- app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt | 2 +- .../java/com/hippo/ehviewer/client/EhRequestBuilder.kt | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt b/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt index 2b64db826..b920b0e7f 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt @@ -116,7 +116,7 @@ private fun rethrowExactly(code: Int, headers: Headers, body: String, e: Throwab throw e } -private suspend inline fun Request.executeAndParsingWith(block: String.() -> T): T { +private suspend inline fun Request.executeAndParsingWith(crossinline block: String.() -> T): T { Log.d(TAG, url.toString()) return execute { val body = body.string() diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.kt b/app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.kt index 727bf7cb6..96f1684f6 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.kt @@ -79,10 +79,11 @@ suspend inline fun Call.usingCancellable(crossinline block: Response.() -> R r.exceptionOrNull()?.let { Log.e(TAG_CALL, "Reading response of call$call failed!") cont.resumeWithException(it) - } - r.getOrNull()?.let { + } ?: run { Log.d(TAG_CALL, "Reading response of call$call succeed!") - cont.resume(it) + // R maybe null + @Suppress("UNCHECKED_CAST") + cont.resume(r.getOrNull() as R) } } else if (isCanceled() && cont.isActive) { Log.e(TAG_CALL, "call$call cancelled but coroutine is Active!")