]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix compilation on OSX 10.3.
authorNick Mathewson <nickm@torproject.org>
Fri, 20 Nov 2009 18:28:16 +0000 (13:28 -0500)
committerNick Mathewson <nickm@torproject.org>
Fri, 20 Nov 2009 18:28:16 +0000 (13:28 -0500)
On this OSX version, there is a stub mlockall() function
that doesn't work, *and* the declaration for it is hidden by
an '#ifdef _P1003_1B_VISIBLE'.  This would make autoconf
successfully find the function, but our code fail to build
when no declaration was found.

This patch adds an additional test for the declaration.

ChangeLog
configure.in
src/common/compat.c

index c00fcdb4e55af6d4a705ffda4aca7b0048f9e6b4..1aa07a30c8f7b6c91d45d00062dd0afe113c3fbe 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Changes in version 0.2.2.7-alpha - 2009-??-??
+  o Minor bugfixes:
+    - Fix compilation on OSX 10.3, which has a stub mlockall() but hides it.
+
 Changes in version 0.2.2.6-alpha - 2009-11-19
   o Major features:
     - Directory authorities can now create, vote on, and serve multiple
index 6f2baf7e0161ed36125352f2e5939ba15f806ca0..f419fdfd60aff584d75b417983bd20d29d1a388c 100644 (file)
@@ -629,9 +629,14 @@ if test x$tcmalloc = xyes ; then
 fi
 
 # By default, we're going to assume we don't have mlockall()
-# bionic and other platforms have various broken mlockall subsystems
-# some of systems don't have a working mlockall, some aren't linkable
+# bionic and other platforms have various broken mlockall subsystems.
+# Some systems don't have a working mlockall, some aren't linkable,
+# and some have it but don't declare it.
 AC_CHECK_FUNCS(mlockall)
+AC_CHECK_DECLS([mlockall], , , [
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif])
 
 # Allow user to specify an alternate syslog facility
 AC_ARG_WITH(syslog-facility,
index 96012e2e0172ff83956fa0d079a39e276e756b01..4fc44afac90d5e3117865239a1ab74c16351a976 100644 (file)
@@ -2258,7 +2258,6 @@ int
 tor_mlockall(void)
 {
   static int memory_lock_attempted = 0;
-  int ret;
 
   if (memory_lock_attempted) {
     return 1;
@@ -2273,15 +2272,13 @@ tor_mlockall(void)
    * http://msdn.microsoft.com/en-us/library/aa366895(VS.85).aspx
    */
 
-#ifdef HAVE_MLOCKALL
-  ret = tor_set_max_memlock();
-  if (ret == 0) {
+#if defined(HAVE_MLOCKALL) && HAVE_DECL_MLOCKALL
+  if (tor_set_max_memlock() == 0) {
     /* Perhaps we only want to log this if we're in a verbose mode? */
     log_notice(LD_GENERAL, "RLIMIT_MEMLOCK is now set to RLIM_INFINITY.");
   }
 
-  ret = mlockall(MCL_CURRENT|MCL_FUTURE);
-  if (ret == 0) {
+  if (mlockall(MCL_CURRENT|MCL_FUTURE) == 0) {
     log_notice(LD_GENERAL, "Insecure OS paging is effectively disabled.");
     return 0;
   } else {