Fix #3596 Close jar sources safely in Java 6 (#3597)

This commit is contained in:
James Mitchell 2017-01-11 15:18:33 -08:00 committed by LexManos
parent c545b8ecd4
commit 941c3eff02
4 changed files with 55 additions and 4 deletions

View file

@ -0,0 +1,49 @@
/*
* Minecraft Forge
* Copyright (c) 2016.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation version 2.1
* of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package net.minecraftforge.common.util;
import org.apache.commons.io.IOUtils;
import javax.annotation.Nullable;
import java.io.Closeable;
import java.io.IOException;
import java.util.zip.ZipFile;
public class Java6Utils
{
/**
* {@link ZipFile} does not implement {@link Closeable} on Java 6.
* This method is the same as {@link IOUtils#closeQuietly(Closeable)} but works on {@link ZipFile} on Java 6.
*/
public static void closeZipQuietly(@Nullable ZipFile file)
{
try
{
if (file != null)
{
file.close();
}
}
catch (IOException ioe)
{
// ignore
}
}
}

View file

@ -20,7 +20,6 @@
package net.minecraftforge.fml.common.asm;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLDecoder;
import java.security.CodeSource;
@ -29,6 +28,7 @@ import java.util.Map;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import net.minecraftforge.common.util.Java6Utils;
import org.apache.commons.io.IOUtils;
import org.apache.logging.log4j.Level;
@ -146,7 +146,7 @@ public class FMLSanityChecker implements IFMLCallHook
}
finally
{
IOUtils.closeQuietly(mcJarFile);
Java6Utils.closeZipQuietly(mcJarFile);
}
}
else

View file

@ -24,6 +24,7 @@ import java.util.Collections;
import java.util.List;
import java.util.jar.JarFile;
import net.minecraftforge.common.util.Java6Utils;
import net.minecraftforge.fml.common.FMLLog;
import net.minecraftforge.fml.common.LoaderException;
import net.minecraftforge.fml.common.MetadataCollection;
@ -119,7 +120,7 @@ public class JarDiscoverer implements ITypeDiscoverer
}
finally
{
IOUtils.closeQuietly(jar);
Java6Utils.closeZipQuietly(jar);
}
return foundMods;
}

View file

@ -36,6 +36,7 @@ import net.minecraft.util.IThreadListener;
import net.minecraft.util.text.translation.LanguageMap;
import net.minecraft.world.storage.SaveFormatOld;
import net.minecraftforge.common.util.CompoundDataFixer;
import net.minecraftforge.common.util.Java6Utils;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.FMLLog;
import net.minecraftforge.fml.common.IFMLSidedHandler;
@ -260,7 +261,7 @@ public class FMLServerHandler implements IFMLSidedHandler
finally
{
IOUtils.closeQuietly(stream);
IOUtils.closeQuietly(zip);
Java6Utils.closeZipQuietly(zip);
}
}