Bug 243347 [Wizards] TarFile should not throw NPE in finalize()
I20080805-1307 TarFile#finalize() throws an NPE which is swallowed by the Finalizer thread. To reproduce, e.g. try to import a *.zip archive. Here, the constructor fails to initialize entryEnumerationStream, so it stays null: Thread [main] (Suspended (breakpoint at line 59 in TarFile)) TarFile.<init>(File) line: 59 TarFile.<init>(String) line: 84 ArchiveFileManipulations.isTarFile(String) line: 47 WizardArchiveFileResourceImportPage1.getFileSystemTree() line: 228 In the finalizer thread, the NPE is thrown: Daemon System Thread [Finalizer] (Suspended (exception NullPointerException)) TarFile.close() line: 71 TarFile.finalize() line: 158 Finalizer.invokeFinalizeMethod(Object) line: not available Finalizer.runFinalizer() line: 83 [local variables unavailable] Finalizer.access$100(Finalizer) line: 14 Finalizer$FinalizerThread.run() line: 160 [local variables unavailable]
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/TarFile.java
internalEntryStream.close();
				internalEntryStream = new FileInputStream(file);
			}
			entryStream = new TarInputStream(internalEntryStream, entry) {
				public void close() {
					
				}
			};
		}
		return entryStream;
	}
	/**
	 * Returns the path name of the file this archive represents.
	 * 
	 * @return path
	 */
	public String getName() {
		return file.getPath();
	}
	/* (non-Javadoc)
	 * @see java.util.zip.ZipFile#finalize()
	 * 
	 */
	protected void finalize() throws Throwable {
		close();
	}
}