summaryrefslogtreecommitdiff
path: root/libgcompat/resource.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgcompat/resource.c')
-rw-r--r--libgcompat/resource.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/libgcompat/resource.c b/libgcompat/resource.c
index 4a7ab4e..836d5e2 100644
--- a/libgcompat/resource.c
+++ b/libgcompat/resource.c
@@ -17,16 +17,17 @@
* very obviously won't work here.
*/
#ifndef NO_BROKEN_SHADOW_SETRLIMIT
-int (*real_rlimit)(int, const struct rlimit *);
+static int (*real_rlimit)(int, const struct rlimit *);
int setrlimit(int resource, const struct rlimit *rlim)
{
struct rlimit my_rlim;
- real_rlimit = dlsym(RTLD_NEXT, "setrlimit");
- assert(real_rlimit != NULL);
+ if (real_rlimit == NULL) {
+ real_rlimit = dlsym(RTLD_NEXT, "setrlimit");
+ assert(real_rlimit);
+ }
memcpy(&my_rlim, rlim, sizeof(struct rlimit));
-
if (my_rlim.rlim_cur == 0) {
my_rlim.rlim_cur = my_rlim.rlim_max;
}