File tree Expand file tree Collapse file tree 1 file changed +22
-3
lines changed
kotlinx-coroutines-core/jvm/src/internal Expand file tree Collapse file tree 1 file changed +22
-3
lines changed Original file line number Diff line number Diff line change @@ -52,18 +52,37 @@ internal object FastServiceLoader {
52
52
val pathToJar = path.substringAfter(" jar:file:" ).substringBefore(' !' )
53
53
val entry = path.substringAfter(" !/" )
54
54
// mind the verify = false flag!
55
- (JarFile (pathToJar, false ) as Closeable ).use { file ->
56
- BufferedReader (InputStreamReader (( file as JarFile ) .getInputStream(ZipEntry (entry)), " UTF-8" )).use { r ->
55
+ (JarFile (pathToJar, false )).use { file ->
56
+ BufferedReader (InputStreamReader (file.getInputStream(ZipEntry (entry)), " UTF-8" )).use { r ->
57
57
return parseFile(r)
58
58
}
59
59
}
60
60
}
61
- // Regular path for everything elese
61
+ // Regular path for everything else
62
62
return BufferedReader (InputStreamReader (url.openStream())).use { reader ->
63
63
parseFile(reader)
64
64
}
65
65
}
66
66
67
+ // JarFile does no implement Closesable on Java 1.6
68
+ private inline fun <R > JarFile.use (block : (JarFile ) -> R ): R {
69
+ var cause: Throwable ? = null
70
+ try {
71
+ return block(this )
72
+ } catch (e: Throwable ) {
73
+ cause = e
74
+ throw e
75
+ } finally {
76
+ try {
77
+ close()
78
+ } catch (closeException: Throwable ) {
79
+ if (cause == = null ) throw closeException
80
+ cause.addSuppressed(closeException)
81
+ throw cause
82
+ }
83
+ }
84
+ }
85
+
67
86
private fun parseFile (r : BufferedReader ): List <String > {
68
87
val names = mutableSetOf<String >()
69
88
while (true ) {
You can’t perform that action at this time.
0 commit comments