Index: trunk/ab5.0/abdev/BasicCompiler_Common/BasicCompiler.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/BasicCompiler.cpp	(revision 772)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/BasicCompiler.cpp	(revision 773)
@@ -581,4 +581,7 @@
 	char temporary[1024],temp2[MAX_PATH];
 
+	ActiveBasic::Common::EnableNX();
+	ActiveBasic::Common::SetHeapOptions();
+
 	hInst = GetModuleHandle( NULL );
 
Index: trunk/ab5.0/abdev/ab_common/include/Environment.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Environment.h	(revision 772)
+++ trunk/ab5.0/abdev/ab_common/include/Environment.h	(revision 773)
@@ -52,4 +52,6 @@
 };
 
+BOOL EnableNX();
+void SetHeapOptions();
 
 }}
Index: trunk/ab5.0/abdev/ab_common/src/Environment.cpp
===================================================================
--- trunk/ab5.0/abdev/ab_common/src/Environment.cpp	(revision 772)
+++ trunk/ab5.0/abdev/ab_common/src/Environment.cpp	(revision 773)
@@ -35,10 +35,4 @@
 	}
 	throw;
-}
-
-BOOL EnableLFH(HANDLE hHeap)
-{
-	ULONG enableLFH = 2;
-	return HeapSetInformation(hHeap, HeapCompatibilityInformation, &enableLFH, sizeof enableLFH);
 }
 
@@ -84,2 +78,39 @@
 	return E_NOTIMPL;
 }
+
+BOOL ActiveBasic::Common::EnableNX()
+{
+	typedef BOOL (WINAPI* PFNSETDEP)(DWORD);
+
+	HMODULE hmodKernel = GetModuleHandle(TEXT("KERNEL32.DLL"));
+	if (PFNSETDEP pfnSetDEP = reinterpret_cast<PFNSETDEP>(GetProcAddress(hmodKernel, "SetProcessDEPPolicy")))
+	{
+		return pfnSetDEP(PROCESS_DEP_ENABLE);
+	}
+	else
+	{
+		return FALSE;
+	}
+}
+
+void ActiveBasic::Common::SetHeapOptions()
+{
+//	SetDllDirectory(_T(""));
+	HMODULE hmodKernel = GetModuleHandle(TEXT("KERNEL32.DLL"));
+
+	typedef BOOL (WINAPI* HSI)(HANDLE, HEAP_INFORMATION_CLASS ,PVOID, SIZE_T);
+	HSI pHsi = reinterpret_cast<HSI>(GetProcAddress(hmodKernel, "HeapSetInformation"));
+	if (!pHsi)
+	{
+		return;
+	}
+
+	ULONG enableLFH = 2;
+	pHsi(GetProcessHeap(), HeapCompatibilityInformation, &enableLFH, sizeof enableLFH);
+
+#ifndef HeapEnableTerminationOnCorruption
+#	define HeapEnableTerminationOnCorruption (HEAP_INFORMATION_CLASS)1
+#endif
+
+	pHsi(NULL, HeapEnableTerminationOnCorruption, NULL, 0);
+}
Index: trunk/ab5.0/abdev/ab_common/stdafx.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/stdafx.h	(revision 772)
+++ trunk/ab5.0/abdev/ab_common/stdafx.h	(revision 773)
@@ -1,3 +1,4 @@
 #pragma once
+#pragma strict_gs_check(on)
 
 #include <map>
Index: trunk/ab5.0/abdev/abdev/abdev.cpp
===================================================================
--- trunk/ab5.0/abdev/abdev/abdev.cpp	(revision 772)
+++ trunk/ab5.0/abdev/abdev/abdev.cpp	(revision 773)
@@ -1498,4 +1498,7 @@
 	HACCEL hAccel;
 
+	ActiveBasic::Common::EnableNX();
+	ActiveBasic::Common::SetHeapOptions();
+
 	hInst=hThisInst;
 	if(!SetupProjectEditor()) return 0;
Index: trunk/ab5.0/abdev/abdev/abdev.vcproj
===================================================================
--- trunk/ab5.0/abdev/abdev/abdev.vcproj	(revision 772)
+++ trunk/ab5.0/abdev/abdev/abdev.vcproj	(revision 773)
@@ -178,4 +178,5 @@
 			<Tool
 				Name="VCLinkerTool"
+				AdditionalOptions="/NXCOMPAT /DYNAMICBASE"
 				AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib imm32.lib htmlhelp.lib rpcrt4.lib imagehlp.lib tinyxmld_STL.lib"
 				OutputFile="$(OutDir)\abdev.exe"
@@ -279,4 +280,5 @@
 			<Tool
 				Name="VCLinkerTool"
+				AdditionalOptions="/NXCOMPAT /DYNAMICBASE /SAFESEH"
 				AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib imm32.lib htmlhelp.lib rpcrt4.lib imagehlp.lib tinyxml_STL.lib"
 				OutputFile="$(OutDir)\abdev.exe"
Index: trunk/ab5.0/abdev/compiler_x64/compiler_x64.vcproj
===================================================================
--- trunk/ab5.0/abdev/compiler_x64/compiler_x64.vcproj	(revision 772)
+++ trunk/ab5.0/abdev/compiler_x64/compiler_x64.vcproj	(revision 773)
@@ -81,5 +81,5 @@
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:AMD64"
+				AdditionalOptions="/MACHINE:AMD64 /NXCOMPAT /DYNAMICBASE"
 				AdditionalDependencies="comctl32.lib psapi.lib imagehlp.lib shlwapi.lib"
 				OutputFile="$(OutDir)\abc.exe"
@@ -194,5 +194,5 @@
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:AMD64"
+				AdditionalOptions="/MACHINE:AMD64 /NXCOMPAT /DYNAMICBASE"
 				AdditionalDependencies="comctl32.lib psapi.lib imagehlp.lib shlwapi.lib"
 				OutputFile="$(OutDir)\abc.exe"
@@ -238,9 +238,7 @@
 		<ProjectReference
 			ReferencedProjectIdentifier="{F01805B6-65B4-4708-88F4-A5E07DEA9FBD}"
-			RelativePathToProject="..\jenga\projects\jenga\jenga.vcproj"
 		/>
 		<ProjectReference
 			ReferencedProjectIdentifier="{87835C33-64C9-4BA5-9B39-608BA5394387}"
-			RelativePathToProject=".\ab_common\ab_common.vcproj"
 		/>
 	</References>
Index: trunk/ab5.0/abdev/compiler_x86/compiler_x86.vcproj
===================================================================
--- trunk/ab5.0/abdev/compiler_x86/compiler_x86.vcproj	(revision 772)
+++ trunk/ab5.0/abdev/compiler_x86/compiler_x86.vcproj	(revision 773)
@@ -77,4 +77,5 @@
 			<Tool
 				Name="VCLinkerTool"
+				AdditionalOptions="/NXCOMPAT /DYNAMICBASE"
 				AdditionalDependencies="comctl32.lib psapi.lib imagehlp.lib shlwapi.lib"
 				OutputFile="$(OutDir)\abc.exe"
@@ -182,4 +183,5 @@
 			<Tool
 				Name="VCLinkerTool"
+				AdditionalOptions="/NXCOMPAT /DYNAMICBASE /SAFESEH"
 				AdditionalDependencies="comctl32.lib psapi.lib imagehlp.lib shlwapi.lib"
 				OutputFile="$(OutDir)\abc.exe"
