Skip to content

Commit

Permalink
Merge pull request #1570 from matthiasblaesing/cleanup
Browse files Browse the repository at this point in the history
Integrate reported quality issues
  • Loading branch information
matthiasblaesing committed Dec 5, 2023
2 parents 3656295 + 7775be3 commit 6706361
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 10 deletions.
2 changes: 1 addition & 1 deletion src/com/sun/jna/Function.java
Expand Up @@ -245,7 +245,7 @@ public static Function getFunction(Pointer p, int callFlags, String encoding) {
this.library = library;
this.functionName = functionName;
this.callFlags = callFlags;
this.options = library.options;
this.options = library.getOptions();
this.encoding = encoding != null ? encoding : Native.getDefaultStringEncoding();
try {
this.peer = library.getSymbolAddress(functionName);
Expand Down
20 changes: 11 additions & 9 deletions src/com/sun/jna/NativeLibrary.java
Expand Up @@ -95,15 +95,15 @@ public long getSymbolAddress(long handle, String name, SymbolProvider parent) {
}
};

private Cleaner.Cleanable cleanable;
private long handle;
private final Cleaner.Cleanable cleanable;
private volatile long handle;
private final String libraryName;
private final String libraryPath;
private final Map<String, Function> functions = new HashMap<>();
private final SymbolProvider symbolProvider;
final int callFlags;
private String encoding;
final Map<String, ?> options;
private final int callFlags;
private final String encoding;
private final Map<String, ?> options;

private static final Map<String, Reference<NativeLibrary>> libraries = new HashMap<>();

Expand All @@ -120,6 +120,7 @@ private static String functionKey(String name, int flags, String encoding) {
return name + "|" + flags + "|" + encoding;
}

@SuppressWarnings("LeakingThisInConstructor")
private NativeLibrary(String libraryName, String libraryPath, long handle, Map<String, ?> options) {
this.libraryName = getLibraryName(libraryName);
this.libraryPath = libraryPath;
Expand All @@ -129,17 +130,18 @@ private NativeLibrary(String libraryName, String libraryPath, long handle, Map<S
int callingConvention = option instanceof Number ? ((Number)option).intValue() : Function.C_CONVENTION;
this.callFlags = callingConvention;
this.options = options;
this.encoding = (String)options.get(Library.OPTION_STRING_ENCODING);
SymbolProvider optionSymbolProvider = (SymbolProvider)options.get(Library.OPTION_SYMBOL_PROVIDER);
if (optionSymbolProvider == null) {
this.symbolProvider = NATIVE_SYMBOL_PROVIDER;
} else {
this.symbolProvider = optionSymbolProvider;
}

if (this.encoding == null) {
this.encoding = Native.getDefaultStringEncoding();
String encodingValue = (String) options.get(Library.OPTION_STRING_ENCODING);
if (encodingValue == null) {
encodingValue = Native.getDefaultStringEncoding();
}
this.encoding = encodingValue;

// Special workaround for w32 kernel32.GetLastError
// Short-circuit the function to use built-in GetLastError access
Expand Down Expand Up @@ -699,8 +701,8 @@ public void close() {

synchronized(this) {
if (handle != 0) {
cleanable.clean();
handle = 0;
cleanable.clean();
}
}
}
Expand Down

0 comments on commit 6706361

Please sign in to comment.