fix net_stat to deal w/ sizeof(jint) != sizeof(int)
This commit is contained in:
parent
dc6429ad45
commit
841746528a
@ -832,7 +832,7 @@ JNIEXPORT void SIGAR_JNI(NetStat_nstat)
|
||||
jclass cls;
|
||||
jfieldID id;
|
||||
jintArray states;
|
||||
|
||||
jint tcp_states[SIGAR_TCP_UNKNOWN];
|
||||
dSIGAR_VOID;
|
||||
|
||||
status = sigar_net_stat_get(sigar, &netstat, flags);
|
||||
@ -849,9 +849,21 @@ JNIEXPORT void SIGAR_JNI(NetStat_nstat)
|
||||
id = JENV->GetFieldID(env, cls, "tcpOutboundTotal", "I");
|
||||
JENV->SetIntField(env, obj, id, netstat.tcp_outbound_total);
|
||||
|
||||
if (sizeof(tcp_states[0]) == sizeof(netstat.tcp_states[0])) {
|
||||
memcpy(&tcp_states[0], &netstat.tcp_states[0],
|
||||
sizeof(netstat.tcp_states));
|
||||
}
|
||||
else {
|
||||
int i;
|
||||
for (i=0; i<SIGAR_TCP_UNKNOWN; i++) {
|
||||
tcp_states[i] = netstat.tcp_states[i];
|
||||
}
|
||||
}
|
||||
|
||||
states = JENV->NewIntArray(env, SIGAR_TCP_UNKNOWN);
|
||||
JENV->SetIntArrayRegion(env, states, 0,
|
||||
SIGAR_TCP_UNKNOWN, netstat.tcp_states);
|
||||
SIGAR_TCP_UNKNOWN,
|
||||
tcp_states);
|
||||
|
||||
id = JENV->GetFieldID(env, cls, "tcpStates", "[I");
|
||||
JENV->SetObjectField(env, obj, id, states);
|
||||
|
Loading…
Reference in New Issue
Block a user