in sysconf, use getrlimit function rather than raw syscall for rlimits
authorRich Felker <dalias@aerifal.cx>
Tue, 15 Apr 2014 22:05:30 +0000 (18:05 -0400)
committerRich Felker <dalias@aerifal.cx>
Tue, 15 Apr 2014 22:05:30 +0000 (18:05 -0400)
the syscall is deprecated (replaced by prlimit64) and does not work
correctly on x32. this change mildly increases size, but is likely
needed anyway for newer archs that might omit deprecated syscalls.

src/conf/sysconf.c

index e225c3dd6ce4091dde11385d7c5325255bec5374..9ac52a10ff80ce754c87309808ec78fb8ff02565 100644 (file)
@@ -228,9 +228,9 @@ long sysconf(int name)
        } else if (values[name] >= -1) {
                return values[name];
        } else if (values[name] < -256) {
-               long lim[2];
-               __syscall(SYS_getrlimit, values[name]&16383, lim);
-               return lim[0] < 0 ? LONG_MAX : lim[0];
+               struct rlimit lim;
+               getrlimit(values[name]&16383, &lim);
+               return lim.rlim_cur > LONG_MAX ? LONG_MAX : lim.rlim_cur;
        }
 
        switch ((unsigned char)values[name]) {