summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--make/joal-common-CustomJavaCode.java36
1 files changed, 21 insertions, 15 deletions
diff --git a/make/joal-common-CustomJavaCode.java b/make/joal-common-CustomJavaCode.java
index 61c6d0c..6f77146 100644
--- a/make/joal-common-CustomJavaCode.java
+++ b/make/joal-common-CustomJavaCode.java
@@ -2,21 +2,27 @@ static final DynamicLibraryBundle alDynamicLookupHelper;
private static final ALProcAddressTable alProcAddressTable;
static {
- alProcAddressTable = new ALProcAddressTable();
- if(null==alProcAddressTable) {
- throw new RuntimeException("Couldn't instantiate ALProcAddressTable");
- }
- alDynamicLookupHelper = new DynamicLibraryBundle(new ALDynamicLibraryBundleInfo());
- if(null==alDynamicLookupHelper) {
- throw new RuntimeException("Null ALDynamicLookupHelper");
- }
- if(!alDynamicLookupHelper.isToolLibLoaded()) {
- throw new RuntimeException("Couln't load native AL library");
- }
- if(!alDynamicLookupHelper.isLibComplete()) {
- throw new RuntimeException("Couln't load native AL/JNI glue library");
- }
- alProcAddressTable.reset(alDynamicLookupHelper);
+ alProcAddressTable = new ALProcAddressTable();
+ if(null==alProcAddressTable) {
+ throw new RuntimeException("Couldn't instantiate ALProcAddressTable");
+ }
+
+ alDynamicLookupHelper = (DynamicLibraryBundle)
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return new DynamicLibraryBundle(new ALDynamicLibraryBundleInfo());
+ }
+ });
+ if(null==alDynamicLookupHelper) {
+ throw new RuntimeException("Null ALDynamicLookupHelper");
+ }
+ if(!alDynamicLookupHelper.isToolLibLoaded()) {
+ throw new RuntimeException("Couln't load native AL library");
+ }
+ if(!alDynamicLookupHelper.isLibComplete()) {
+ throw new RuntimeException("Couln't load native AL/JNI glue library");
+ }
+ alProcAddressTable.reset(alDynamicLookupHelper);
}
public static ALProcAddressTable getALProcAddressTable() { return alProcAddressTable; }