Hi Alan,
thanks for the response. I originally had a CHECK_NULL_RETURN after getBraodcast and tests
failed on Macos, but not on other platforms!
The issue is that getBroadcast returns NULL when broadcast is not available for an interface, or when the ioctl calls return an error. The former is the case on macos with the loopback lo interface.
Hence we went with the ExceptionCheck after these calls.
WRT returning ifs, I just followed the convention created in the CHECKED_MALLOC3 macro, as
ifs is an "in" parameter.

regards
Mark

On 04/03/2014 11:28, Alan Bateman wrote:
On 04/03/2014 11:06, Mark Sheppard wrote:
Hi
  please oblige and review the following changes

http://cr.openjdk.java.net/~msheppar/8025293/webrev/

to address the issue in

https://bugs.openjdk.java.net/browse/JDK-8025293

this applies additional checks after JNI native calls in
src/solaris/native/java/net/NetworkInterface.c
src/windows/native/java/net/NetworkInterface.c

The main changes are NULL checks and pending exception checks.
I went through the webrev and it looks reasonable to me. The awkwardness of not knowing if GetStringUTFChars fails with a pending exception or not makes me wonder if the recent suggestion on core-libs-dev to check for a pending exception might be worth looking at again, even by introducing variations of JNU_ThrowOutOfMemoryError. Not for this patch of course but this patch does highlight the issue again.

One thing that isn't 100% clear to me is in the Solaris/Linux version of addif where it returns ifs if either getBroadcast or getSubnet fail with a pending exception. Is there additional cleanup/free that needs to be done for this case or is this the reason for returning the partially initialized ifs. I also wonder if it's necessary to check for a pending exception, could getBroadcast returning NULL is used too?

-Alan.



Reply via email to