aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/jogamp/common/os
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/jogamp/common/os')
-rw-r--r--src/java/jogamp/common/os/DynamicLinkerImpl.java11
-rw-r--r--src/java/jogamp/common/os/UnixDynamicLinkerImpl.java7
2 files changed, 10 insertions, 8 deletions
diff --git a/src/java/jogamp/common/os/DynamicLinkerImpl.java b/src/java/jogamp/common/os/DynamicLinkerImpl.java
index 56a909e..5ce94c1 100644
--- a/src/java/jogamp/common/os/DynamicLinkerImpl.java
+++ b/src/java/jogamp/common/os/DynamicLinkerImpl.java
@@ -144,14 +144,15 @@ import com.jogamp.common.util.SecurityUtil;
@Override
public final void closeLibrary(final long libraryHandle, final boolean debug) throws SecurityException, IllegalArgumentException {
final LibRef libRef = decrLibRefCount( libraryHandle );
- if( null == libRef ) {
- throw new IllegalArgumentException("Library handle 0x"+Long.toHexString(libraryHandle)+" unknown.");
- }
- checkLinkPermission(libRef.getName());
+ if( null != libRef ) {
+ checkLinkPermission(libRef.getName());
+ } // else null libRef is OK for global lookup
if( DEBUG || debug ) {
System.err.println("DynamicLinkerImpl.closeLibrary(0x"+Long.toHexString(libraryHandle)+" -> "+libRef+")");
}
- closeLibraryImpl(libraryHandle);
+ if( 0 != libraryHandle ) {
+ closeLibraryImpl(libraryHandle);
+ }
}
protected abstract void closeLibraryImpl(final long libraryHandle) throws SecurityException;
diff --git a/src/java/jogamp/common/os/UnixDynamicLinkerImpl.java b/src/java/jogamp/common/os/UnixDynamicLinkerImpl.java
index 5e8ba9d..ddaeea2 100644
--- a/src/java/jogamp/common/os/UnixDynamicLinkerImpl.java
+++ b/src/java/jogamp/common/os/UnixDynamicLinkerImpl.java
@@ -49,15 +49,16 @@ package jogamp.common.os;
@Override
protected final long lookupSymbolLocalImpl(final long libraryHandle, final String symbolName) throws SecurityException {
- return dlsym(libraryHandle, symbolName);
+ return 0 != libraryHandle ? dlsym(libraryHandle, symbolName) : 0;
}
@Override
protected final void closeLibraryImpl(final long libraryHandle) throws SecurityException {
- dlclose(libraryHandle);
+ if( 0 != libraryHandle ) {
+ dlclose(libraryHandle);
+ }
}
-
@Override
public final String getLastError() {
return dlerror();