<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2723.2500" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Hello all,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Just a heads-up regarding HDF5. </FONT><FONT
face=Arial size=2>I installed the latest version of the HDF 5
library* and hit some problems running napi5_test. </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>The problems come from the return value of
H5Aiterate and H5GIterate, and affect NX5getattrinfo, NX5getnextattr and
NX5getnextentry. The nexus API seems to expect them to return 1 while iteration
is valid, 0 at the end of the traversal, and -1 otherwise. However, these
functions now seem to skip the 0 and go straight to -1. The state NX_EOD
never seems to be reached; instead one gets immediately to the state NX_ERROR.
This means functions like NX5getnextattr and NX5getnextentry fail with "ERROR:
iteration was not successful", and NX5getattrinfo goes into infinite
loops.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Simple hacks get past this. If one replaces
the line in NX5getnextentry( ):</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>else if (iRet == 0)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>with </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>else if (iRet == 0 || iRet == -1),</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>and changes a few similar lines in
NX5getattrinfo & NX5getnextattr (changing </FONT><FONT face=Arial
size=2>lines like while(iRet != 0) to while( iRet > 0) eliminates
infinite loops), then napi5_test runs successfully.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>But this solution might hide
a problem: the HDF5 behavior that supported the distinction
between NX_EOD and NX_ERROR may have changed. Anyone relying on that
distinction would want to know about this.</FONT><FONT face=Arial
size=2> </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Regards,</FONT></DIV>
<DIV><FONT face=Arial size=2>Tim Kelley</FONT></DIV>
<DIV><FONT face=Arial size=2><A
href="mailto:tkelley@caltech.edu">tkelley@caltech.edu</A></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>* version 1.6.0, precompiled for linux with gcc
3.2.2</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV></BODY></HTML>