Ken Thomases : libwine: Cope with Leopard brokenness w.r.t. setrlimit( RLIMIT_NOFILE).

Alexandre Julliard julliard at winehq.org
Sat Mar 22 08:18:34 CDT 2008


Module: wine
Branch: master
Commit: 3674c77341a0a95c8dc57597ea0a9507acb86b61
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3674c77341a0a95c8dc57597ea0a9507acb86b61

Author: Ken Thomases <ken at codeweavers.com>
Date:   Fri Mar 21 21:32:49 2008 -0500

libwine: Cope with Leopard brokenness w.r.t. setrlimit(RLIMIT_NOFILE).

---

 libs/wine/loader.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/libs/wine/loader.c b/libs/wine/loader.c
index 13eb84a..0f05f0c 100644
--- a/libs/wine/loader.c
+++ b/libs/wine/loader.c
@@ -596,7 +596,18 @@ static void set_max_limit( int limit )
     if (!getrlimit( limit, &rlimit ))
     {
         rlimit.rlim_cur = rlimit.rlim_max;
-        setrlimit( limit, &rlimit );
+        if (setrlimit( limit, &rlimit ) != 0)
+        {
+#if defined(__APPLE__) && defined(RLIMIT_NOFILE) && defined(OPEN_MAX)
+            /* On Leopard, setrlimit(RLIMIT_NOFILE, ...) fails on attempts to set
+             * rlim_cur above OPEN_MAX (even if rlim_max > OPEN_MAX). */
+            if (limit == RLIMIT_NOFILE && rlimit.rlim_cur > OPEN_MAX)
+            {
+                rlimit.rlim_cur = OPEN_MAX;
+                setrlimit( limit, &rlimit );
+            }
+#endif
+        }
     }
 #endif
 }




More information about the wine-cvs mailing list