浏览代码

Avoid crashing when global search encounters a NoClassDefFoundError

arkon 3 年之前
父节点
当前提交
9c426bc216
共有 1 个文件被更改,包括 9 次插入2 次删除
  1. 9 2
      app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt

+ 9 - 2
app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt

@@ -112,8 +112,15 @@ abstract class HttpSource : CatalogueSource {
      * @param filters the list of filters to apply.
      */
     override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
-        return client.newCall(searchMangaRequest(page, query, filters))
-            .asObservableSuccess()
+        return Observable.defer {
+            try {
+                client.newCall(searchMangaRequest(page, query, filters)).asObservableSuccess()
+            } catch (e: NoClassDefFoundError) {
+                // RxJava doesn't handle Errors, which tends to happen during global searches
+                // if an old extension using non-existent classes is still around
+                throw RuntimeException(e)
+            }
+        }
             .map { response ->
                 searchMangaParse(response)
             }