- From: GIRALT,JOSEP (HP-Spain,ex2) <josep_giralt@hp.com>
- Date: Wed, 6 Feb 2002 08:14:07 -0500 (EST)
- To: "'www-lib@w3.org'" <www-lib@w3.org>
Hi all,
I've recently found a problem using the libwww library under linux (RedHat
6.2 and 7.2). The usage of the readdir_r() in the files HTFile.c and
HTMulti.c are correct in most of the systems but cause a core dump under
Linux. The reason is that the glibc implementation of that call does return
0 at the end-of-directory and sets the "dirbuf" pointer to NULL (
This is consistent with the GNU documentation
http://www.gnu.org/manual/glibc-2.2.3/html_node/libc_262.html
but not consistent with the POSIX documentation that says it should return
an error.
This causes a core dump because the
while (readdir_r(dp, &result, &dirbuf) == 0)
{
if (!dirbuf->d_ino ......
}
loop does not end at the end of directory.
I just did a fix by
while (readdir_r(dp, &result, &dirbuf) == 0)
{
if (dirbuf == (struct direct *)NULL) break;
if (!dirbuf->d_ino ......
}
which covers all the different Unix versions HPUX, Linux and Solaries I've
been able to test so far. But still I don't know how you want to address
this issue in the future because the same issue seems to re-appear for each
Linux versions.
Thanks a lot in advance and let me know what you think.
Josep Giralt
Software Architect.
Hewlett-Packard InkJet Commercial Division. Barcelona. Spain.
Received on Wednesday, 6 February 2002 08:20:38 UTC