Merge "Fix memory leak" am: be3c5da1f8 am: 64d5ab0cae
am: 70c700066d
Change-Id: I3c71673650b0f4bbfa9deb4d71ab683eea0e2639
diff --git a/src/main/java/com/android/tools/metalava/Driver.kt b/src/main/java/com/android/tools/metalava/Driver.kt
index 97ae453..2a440bd 100644
--- a/src/main/java/com/android/tools/metalava/Driver.kt
+++ b/src/main/java/com/android/tools/metalava/Driver.kt
@@ -154,6 +154,8 @@
}
exitCode = e.exitCode
exitValue = false
+ } finally {
+ Disposer.dispose(LintCoreApplicationEnvironment.get().parentDisposable)
}
if (options.updateBaseline) {
@@ -434,8 +436,6 @@
AnnotationStatistics(codebase).measureCoverageOf(options.annotationCoverageOf)
}
- Disposer.dispose(LintCoreApplicationEnvironment.get().parentDisposable)
-
if (options.verbose) {
val packageCount = codebase.size()
options.stdout.println("\n$PROGRAM_NAME finished handling $packageCount packages in $stopwatch")
@@ -900,7 +900,7 @@
private fun createProjectEnvironment(): LintCoreProjectEnvironment {
ensurePsiFileCapacity()
val appEnv = LintCoreApplicationEnvironment.get()
- val parentDisposable = Disposer.newDisposable()
+ val parentDisposable = appEnv.parentDisposable
if (!assertionsEnabled() &&
System.getenv(ENV_VAR_METALAVA_DUMP_ARGV) == null &&
diff --git a/src/test/java/com/android/tools/metalava/DriverTest.kt b/src/test/java/com/android/tools/metalava/DriverTest.kt
index 5d521dc..533e58f 100644
--- a/src/test/java/com/android/tools/metalava/DriverTest.kt
+++ b/src/test/java/com/android/tools/metalava/DriverTest.kt
@@ -38,6 +38,7 @@
import com.google.common.io.ByteStreams
import com.google.common.io.Closeables
import com.google.common.io.Files
+import com.intellij.openapi.util.Disposer
import org.intellij.lang.annotations.Language
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotNull
@@ -94,6 +95,9 @@
val sw = StringWriter()
val writer = PrintWriter(sw)
+
+ Disposer.setDebugMode(true)
+
if (!com.android.tools.metalava.run(arrayOf(*args), writer, writer)) {
val actualFail = cleanupString(sw.toString(), null)
if (cleanupString(expectedFail, null).replace(".", "").trim() !=
@@ -124,6 +128,8 @@
fail("Printed newlines with nothing else")
}
+ Disposer.assertIsEmpty(true)
+
return printedOutput
} finally {
System.setOut(previousOut)