mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-17 17:44:40 +02:00
8179887: Build failure with glibc >= 2.24: error: 'int readdir_r(DIR*, dirent*, dirent**)' is deprecated
Use readir rather than readdir_r on Linux. Reviewed-by: kbarrett, stuefe, andrew
This commit is contained in:
parent
9a94336b7d
commit
c555679d4f
1 changed files with 1 additions and 19 deletions
|
@ -98,26 +98,8 @@ inline int os::ftruncate(int fd, jlong length) {
|
||||||
|
|
||||||
inline struct dirent* os::readdir(DIR* dirp, dirent *dbuf)
|
inline struct dirent* os::readdir(DIR* dirp, dirent *dbuf)
|
||||||
{
|
{
|
||||||
// readdir_r has been deprecated since glibc 2.24.
|
|
||||||
// See https://sourceware.org/bugzilla/show_bug.cgi?id=19056 for more details.
|
|
||||||
#pragma GCC diagnostic push
|
|
||||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
|
||||||
|
|
||||||
dirent* p;
|
|
||||||
int status;
|
|
||||||
assert(dirp != NULL, "just checking");
|
assert(dirp != NULL, "just checking");
|
||||||
|
return ::readdir(dirp);
|
||||||
// NOTE: Linux readdir_r (on RH 6.2 and 7.2 at least) is NOT like the POSIX
|
|
||||||
// version. Here is the doc for this function:
|
|
||||||
// http://www.gnu.org/manual/glibc-2.2.3/html_node/libc_262.html
|
|
||||||
|
|
||||||
if((status = ::readdir_r(dirp, dbuf, &p)) != 0) {
|
|
||||||
errno = status;
|
|
||||||
return NULL;
|
|
||||||
} else
|
|
||||||
return p;
|
|
||||||
|
|
||||||
#pragma GCC diagnostic pop
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int os::closedir(DIR *dirp) {
|
inline int os::closedir(DIR *dirp) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue