Looks fine to me.

On 04.05.16 21:32, Volker Simonis wrote:
Hi,

can somebody please review this small change which fixes the AIX build
after change 8145547, but also fixes an incorrect usage pattern of
RTLD_NOLOAD in 8145547:

http://cr.openjdk.java.net/~simonis/webrevs/2016/8156020/
https://bugs.openjdk.java.net/browse/JDK-8156020

Here are the details from the bug report:

Change 8145547 uses the RTLD_NOLOAD flag when calling dlopen to probe
the availability of the GTK libraries.

But unfortunately RTLD_NOLOAD is not Posix and for example not
available on AIX and BSD.

I also found out, that the implementation of 8145547 contains a bug.
It uses RTLD_NOLOAD in an incorrect way. The man page for dlopen
clearly states that one of the two flags RTLD_LAZY or RTLD_NOW has to
be included in the flags. But the current implementation uses
RTLD_NOLOAD as single flag. Therefor the call to dlopen() currently
always returns NULL, no difference if the corresponding library has
been loaded already or not.

The bug report also contains a small C program which can be used to
reproduce the problem.

The fix is to only use RTLD_NOLOAD if it is defined. The change
removes the 'flags' argument from the various check() functions and
replaces it with a boolean 'load' argument. It indicates if the check
functions should just look for a previously loaded version of the GTK
libraries (i.e. if 'load' == false) or if it should additionally try
to load the libraries if that hasn't been done before (i.e. if 'load'
== true).

I hope I haven't changed the previous program semantics with my
change. At least I couldn't see any difference :)

I've built and smoke tested on Linux/Solaris and AIX with various
combinations for jdk.gtk.version,
-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel and
FileDialog implementations.

I'd like to push this directly to jdk9-dev to fix the AIX build as
fast as possible. Would that be OK?

Thank you and best regards,
Volker



--
Best regards, Sergey.

Reply via email to