From ff60212cd6782d553deff750bab582bf2d36d765 Mon Sep 17 00:00:00 2001 From: jfrijters Date: Thu, 11 Feb 2010 09:50:26 +0000 Subject: [PATCH] Ignore SecurityException when trying to register Ctrl-Break handler. --- runtime/openjdk.cs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/runtime/openjdk.cs b/runtime/openjdk.cs index e8b305b6..f21f1a09 100644 --- a/runtime/openjdk.cs +++ b/runtime/openjdk.cs @@ -5473,7 +5473,7 @@ namespace IKVM.NativeCode.sun.misc } } - private static CriticalCtrlHandler defaultConsoleCtrlDelegate; + private static object defaultConsoleCtrlDelegate; private static bool ConsoleCtrlCheck(CtrlTypes ctrlType) { @@ -5537,6 +5537,12 @@ namespace IKVM.NativeCode.sun.misc return -1; } + // this is a separate method to be able to catch the SecurityException (for the LinkDemand) + private static void RegisterCriticalCtrlHandler() + { + defaultConsoleCtrlDelegate = new CriticalCtrlHandler(); + } + // Register a signal handler public static long handle0(int sig, long nativeH) { @@ -5547,7 +5553,13 @@ namespace IKVM.NativeCode.sun.misc case 0: // Default Signal Handler if (defaultConsoleCtrlDelegate == null && Environment.OSVersion.Platform == PlatformID.Win32NT) { - defaultConsoleCtrlDelegate = new CriticalCtrlHandler(); + try + { + RegisterCriticalCtrlHandler(); + } + catch (System.Security.SecurityException) + { + } } break; case 1: // Ignore Signal