Skip to content

Commit

Permalink
Fix array mappings
Browse files Browse the repository at this point in the history
  • Loading branch information
dbwiddis committed Mar 6, 2022
1 parent 82e7271 commit d6be19d
Showing 1 changed file with 19 additions and 10 deletions.
29 changes: 19 additions & 10 deletions contrib/platform/src/com/sun/jna/platform/unix/solaris/Kstat2.java
Expand Up @@ -93,9 +93,8 @@ class Kstat2Handle extends PointerType {

/**
* Instantiates and opens a new Kstat2Handle with no filtering. All of the
* system's kstats will be available. Convenience method for
* {@link Kstat2#kstat2_open(PointerByReference, Kstat2MatcherList)} with a null
* matcher list.
* system's kstats will be available. Convenience method for {open()} with a
* null matcher list.
*/
public Kstat2Handle() {
this(null);
Expand Down Expand Up @@ -298,11 +297,21 @@ public Object getValue(String name) {
case KSTAT2_NVVT_INT:
return nv.data.integerVal;
case KSTAT2_NVVT_INTS:
return nv.data.integers.addr.getLongArray(0, nv.data.integers.len);
Pointer[] intPtrArray = nv.data.integers.addr.getPointerArray(0, nv.data.integers.len);
long[] integerArr = new long[intPtrArray.length];
for (int i = 0; i < integerArr.length; i++) {
integerArr[i] = intPtrArray[i].getLong(0);
}
return integerArr;
case KSTAT2_NVVT_STR:
return nv.data.strings.addr.getString(0);
return nv.data.stringVal;
case KSTAT2_NVVT_STRS:
return nv.data.strings.addr.getStringArray(0, nv.data.strings.len);
Pointer[] strPtrArray = nv.data.strings.addr.getPointerArray(0, nv.data.strings.len);
String[] stringArray = new String[strPtrArray.length];
for (int i = 0; i < stringArray.length; i++) {
stringArray[i] = strPtrArray[i].getString(0);
}
return stringArray;
default:
return null;
}
Expand All @@ -327,6 +336,7 @@ public static class UNION extends Union {
public Kstat2Map map;
public long integerVal;
public IntegersArr integers;
public String stringVal;
public StringsArr strings;

@FieldOrder({ "addr", "len" })
Expand Down Expand Up @@ -365,6 +375,8 @@ public void read() {
data.setType(IntegersArr.class);
break;
case KSTAT2_NVVT_STR:
data.setType(String.class);
break;
case KSTAT2_NVVT_STRS:
data.setType(StringsArr.class);
break;
Expand Down Expand Up @@ -423,7 +435,7 @@ public void read() {

/**
* Allocates a new matcher list to allow matchers to be provided to the
* {@link Kstat2#kstat2_open(PointerByReference, Kstat2MatcherList)} function.
* {@link #kstat2_open()} function.
*
* @param matchers
* Receives a pointer to the allocated matcher list.
Expand Down Expand Up @@ -460,9 +472,6 @@ public void read() {
* The string to match.
* @param matchers
* The list to which to append the matcher.
* @return Upon successful completion, returns a int value of
* {@link Kstat2#KSTAT2_S_OK}. If an error occurs a value other than
* KSTAT2_S_OK is returned.
*/
int kstat2_add_matcher(int type, String match, Kstat2MatcherList matchers);

Expand Down

0 comments on commit d6be19d

Please sign in to comment.