From 65043f78fa73cccda20d5c6ce94393b8a02f140f Mon Sep 17 00:00:00 2001
From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Wed, 15 May 2002 15:57:05 +0000
Subject: [PATCH] 	* testsuite/testsuite_hooks.h
 (__set_testsuite_memlimit): 	Retrieve current limits before setting.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53490 138bc75d-0d04-0410-961f-82ee72b054a4
---
 libstdc++-v3/ChangeLog                   |  5 +++++
 libstdc++-v3/testsuite/testsuite_hooks.h | 10 +++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index b1bb70159c78..91082c7ebf2a 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2002-05-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
+
+	* testsuite/testsuite_hooks.h (__set_testsuite_memlimit):
+	Retrieve current limits before setting.
+
 2002-05-15  Benjamin Kosnik  <bkoz@redhat.com>
 
 	PR libstdc++/6518
diff --git a/libstdc++-v3/testsuite/testsuite_hooks.h b/libstdc++-v3/testsuite/testsuite_hooks.h
index 08d93d382745..eb87d51f2973 100644
--- a/libstdc++-v3/testsuite/testsuite_hooks.h
+++ b/libstdc++-v3/testsuite/testsuite_hooks.h
@@ -81,25 +81,33 @@ void
 __set_testsuite_memlimit(float __size = MEMLIMIT_MB)
 {
     struct rlimit r;
-    r.rlim_cur = (rlim_t)(__size * 1048576);
+    rlim_t limit = (rlim_t)(__size * 1048576);
 
     // Heap size, seems to be common.
 #if _GLIBCPP_HAVE_MEMLIMIT_DATA
+    getrlimit(RLIMIT_DATA, &r);
+    r.rlim_cur = limit;
     setrlimit(RLIMIT_DATA, &r);
 #endif
 
     // Resident set size.
 #if _GLIBCPP_HAVE_MEMLIMIT_RSS
+    getrlimit(RLIMIT_RSS, &r);
+    r.rlim_cur = limit;
     setrlimit(RLIMIT_RSS, &r);
 #endif
 
     // Mapped memory (brk + mmap).
 #if _GLIBCPP_HAVE_MEMLIMIT_VMEM
+    getrlimit(RLIMIT_VMEM, &r);
+    r.rlim_cur = limit;
     setrlimit(RLIMIT_VMEM, &r);
 #endif
 
     // Virtual memory.
 #if _GLIBCPP_HAVE_MEMLIMIT_AS
+    getrlimit(RLIMIT_AS, &r);
+    r.rlim_cur = limit;
     setrlimit(RLIMIT_AS, &r);
 #endif
 }
-- 
GitLab