From 93988e89900ade94cf53aa926fdb6b7c1c519747 Mon Sep 17 00:00:00 2001
From: arkon <arkon@users.noreply.github.com>
Date: Mon, 4 Oct 2021 13:03:21 -0400
Subject: [PATCH] Close instances of Duktape (#9363)

---
 .../eu/kanade/tachiyomi/extension/all/mangapark/MangaPark.kt | 3 +--
 .../eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt  | 3 ---
 .../src/eu/kanade/tachiyomi/extension/zh/qiximh/Qiximh.kt    | 5 +----
 .../tachiyomi/extension/zh/tencentcomics/TencentComics.kt    | 3 +--
 4 files changed, 3 insertions(+), 11 deletions(-)

diff --git a/src/all/mangapark/src/eu/kanade/tachiyomi/extension/all/mangapark/MangaPark.kt b/src/all/mangapark/src/eu/kanade/tachiyomi/extension/all/mangapark/MangaPark.kt
index caea7d91e..1af01e36d 100644
--- a/src/all/mangapark/src/eu/kanade/tachiyomi/extension/all/mangapark/MangaPark.kt
+++ b/src/all/mangapark/src/eu/kanade/tachiyomi/extension/all/mangapark/MangaPark.kt
@@ -275,7 +275,6 @@ open class MangaPark(
             throw Exception("The chapter content seems to be deleted.\n\nContact the site owner if possible.")
         }
 
-        val duktape = Duktape.create()
         val script = document.select("script").html()
         val imgCdnHost = script.substringAfter("const imgCdnHost = \"").substringBefore("\";")
         val imgPathLisRaw = script.substringAfter("const imgPathLis = ").substringBefore(";")
@@ -286,7 +285,7 @@ open class MangaPark(
         val decryptScript =
             cryptoJS + "CryptoJS.AES.decrypt($amWord, $amPass).toString(CryptoJS.enc.Utf8);"
 
-        val imgWordLisRaw = duktape.evaluate(decryptScript).toString()
+        val imgWordLisRaw = Duktape.create().use { it.evaluate(decryptScript).toString() }
         val imgWordLis = json.parseToJsonElement(imgWordLisRaw).jsonArray
 
         return imgWordLis.mapIndexed { i, imgWordE ->
diff --git a/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt b/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt
index 11d6a39e3..dd289cc25 100644
--- a/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt
+++ b/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt
@@ -257,13 +257,11 @@ class Mangahere : ParsedHttpSource() {
             val pageBase = link.substring(0, link.lastIndexOf("/"))
 
             IntRange(1, pagesNumber).map { i ->
-
                 val pageLink = "$pageBase/chapterfun.ashx?cid=$chapterId&page=$i&key=$secretKey"
 
                 var responseText = ""
 
                 for (tr in 1..3) {
-
                     val request = Request.Builder()
                         .url(pageLink)
                         .addHeader("Referer", link)
@@ -302,7 +300,6 @@ class Mangahere : ParsedHttpSource() {
     }
 
     private fun extractSecretKey(html: String, duktape: Duktape): String {
-
         val secretKeyScriptLocation = html.indexOf("eval(function(p,a,c,k,e,d)")
         val secretKeyScriptEndLocation = html.indexOf("</script>", secretKeyScriptLocation)
         val secretKeyScript = html.substring(secretKeyScriptLocation, secretKeyScriptEndLocation).removePrefix("eval")
diff --git a/src/zh/qiximh/src/eu/kanade/tachiyomi/extension/zh/qiximh/Qiximh.kt b/src/zh/qiximh/src/eu/kanade/tachiyomi/extension/zh/qiximh/Qiximh.kt
index a562dae43..c36d9d8b3 100644
--- a/src/zh/qiximh/src/eu/kanade/tachiyomi/extension/zh/qiximh/Qiximh.kt
+++ b/src/zh/qiximh/src/eu/kanade/tachiyomi/extension/zh/qiximh/Qiximh.kt
@@ -291,12 +291,9 @@ class Qiximh : HttpSource() {
         val document = response.asJsoup()
 
         // Special thanks to author who created Mangahere.kt
-        val duktape = Duktape.create()
-
         val script = document.select("script:containsData(function(p,a,c,k,e,d))").html().removePrefix("eval")
-        val deobfuscatedScript = duktape.evaluate(script).toString()
+        val deobfuscatedScript = Duktape.create().use { it.evaluate(script).toString() }
         val urls = deobfuscatedScript.substringAfter("newImgs=[\"").substringBefore("\"]").split("\",\"")
-        duktape.close()
 
         return urls.mapIndexed { index, s -> Page(index, "", s) }
     }
diff --git a/src/zh/tencentcomics/src/eu/kanade/tachiyomi/extension/zh/tencentcomics/TencentComics.kt b/src/zh/tencentcomics/src/eu/kanade/tachiyomi/extension/zh/tencentcomics/TencentComics.kt
index 50952d2c3..6bc58c00e 100644
--- a/src/zh/tencentcomics/src/eu/kanade/tachiyomi/extension/zh/tencentcomics/TencentComics.kt
+++ b/src/zh/tencentcomics/src/eu/kanade/tachiyomi/extension/zh/tencentcomics/TencentComics.kt
@@ -131,7 +131,6 @@ class TencentComics : ParsedHttpSource() {
     """
 
     override fun pageListParse(document: Document): List<Page> {
-        val duktape = Duktape.create()
         val pages = ArrayList<Page>()
         var html = document.html()
 
@@ -145,7 +144,7 @@ class TencentComics : ParsedHttpSource() {
 
         val raw = html.substringAfterLast("var DATA =").substringBefore("PRELOAD_NUM").trim().replace(Regex("^\'|\',$"), "")
         val decodePrefix = "var raw = \"$raw\"; var nonce = $nonce"
-        val full = duktape.evaluate(decodePrefix + jsDecodeFunction).toString()
+        val full = Duktape.create().use { it.evaluate(decodePrefix + jsDecodeFunction).toString() }
         val chapterData = json.parseToJsonElement(String(Base64.decode(full, Base64.DEFAULT))).jsonObject
 
         if (!chapterData["chapter"]!!.jsonObject["canRead"]!!.jsonPrimitive.boolean) throw Exception("[此章节为付费内容]")