>From 93f03f40399e368f4b41ac169760596bf2dcd75d Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 29 Oct 2017 14:34:21 +0100 Subject: [PATCH 5/7] get-rusage-data: Avoid crash on Haiku. --- ChangeLog | 5 +++++ lib/get-rusage-data.c | 7 +++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 96a2f85..66d0ef6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2017-10-29 Bruno Haible + get-rusage-data: Avoid crash on Haiku. + * lib/get-rusage-data.c: Avoid the setlimit-based implementation. + +2017-10-29 Bruno Haible + get-rusage-as: Avoid crash on Haiku. * lib/get-rusage-as.c: Avoid the setlimit-based implementation. diff --git a/lib/get-rusage-data.c b/lib/get-rusage-data.c index b55e727..1966a6e 100644 --- a/lib/get-rusage-data.c +++ b/lib/get-rusage-data.c @@ -121,8 +121,7 @@ BeOS, Haiku: a) On BeOS, there is no setrlimit function. - On Haiku, setrlimit exists. RLIMIT_DATA is defined but unsupported: - getrlimit of RLIMIT_DATA always fails with errno = EINVAL. + On Haiku, setrlimit exists. RLIMIT_DATA is defined but setrlimit fails. b) There is a specific BeOS API: get_next_area_info(). */ @@ -151,7 +150,7 @@ #if !(defined __APPLE__ && defined __MACH__) || defined TEST /* Implement get_rusage_data_via_setrlimit(). */ -# if HAVE_SETRLIMIT && defined RLIMIT_DATA +# if HAVE_SETRLIMIT && defined RLIMIT_DATA && !defined __HAIKU__ # ifdef _AIX # define errno_expected() (errno == EINVAL || errno == EFAULT) @@ -409,7 +408,7 @@ get_rusage_data (void) /* get_rusage_data_via_setrlimit() does not work. Prefer get_rusage_data_via_iterator(). */ return get_rusage_data_via_iterator (); -#elif HAVE_SETRLIMIT && defined RLIMIT_DATA +#elif HAVE_SETRLIMIT && defined RLIMIT_DATA && !defined __HAIKU__ # if defined __linux__ || defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__ || defined _AIX || defined __hpux || defined __sgi || defined __osf__ || defined __sun /* Linux, FreeBSD, NetBSD, OpenBSD, AIX, HP-UX, IRIX, OSF/1, Solaris */ /* get_rusage_data_via_setrlimit() works. */ return get_rusage_data_via_setrlimit (); -- 2.7.4