diff --git a/src/main/java/cpw/mods/fml/relauncher/FMLSecurityManager.java b/src/main/java/cpw/mods/fml/relauncher/FMLSecurityManager.java index a6c1afe..8fac41a 100644 --- a/src/main/java/cpw/mods/fml/relauncher/FMLSecurityManager.java +++ b/src/main/java/cpw/mods/fml/relauncher/FMLSecurityManager.java @@ -16,9 +16,11 @@ String permName = perm.getName() != null ? perm.getName() : "missing"; if (permName.startsWith("exitVM")) { - String callingClass = getClassContext()[4].getName(); - // FML is allowed to call system exit - if (!callingClass.startsWith("cpw.mods.fml.")) + Class[] classContexts = getClassContext(); + String callingClass = classContexts.length > 3 ? classContexts[4].getName() : "none"; + String callingParent = classContexts.length > 4 ? classContexts[5].getName() : "none"; + // FML is allowed to call system exit and the Minecraft applet (from the quit button) + if (!(callingClass.startsWith("cpw.mods.fml.") || ( "net.minecraft.client.Minecraft".equals(callingClass) && "net.minecraft.client.Minecraft".equals(callingParent)) || ("net.minecraft.server.dedicated.DedicatedServer".equals(callingClass) && "net.minecraft.server.MinecraftServer".equals(callingParent)))) { throw new ExitTrappedException(); } diff --git a/src/main/resources/fmlversion.properties b/src/main/resources/fmlversion.properties index 4d49b22..19de82e 100644 --- a/src/main/resources/fmlversion.properties +++ b/src/main/resources/fmlversion.properties @@ -1,6 +1,6 @@ fmlbuild.major.number=7 fmlbuild.minor.number=2 -fmlbuild.revision.number=213 -fmlbuild.build.number=34 +fmlbuild.revision.number=214 +fmlbuild.build.number=35 fmlbuild.mcversion=1.7.2 fmlbuild.mcpversion=9.03