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
/*******************************************************************************
 * Copyright (c) 2004, 2007 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 * IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.ui.internal.wizards.datatransfer;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.GZIPInputStream;
/**
 * Reads a .tar or .tar.gz archive file, providing an index enumeration
 * and allows for accessing an InputStream for arbitrary files in the
 * archive.
 * 
 * @since 3.1
 */
public class TarFile {