Browse Source

Check for lround with autoconf; fall back to rint.

Nick Mathewson 14 years ago
parent
commit
0ac4b0f99d
2 changed files with 6 additions and 4 deletions
  1. 1 1
      configure.in
  2. 5 3
      src/common/util.c

+ 1 - 1
configure.in

@@ -223,7 +223,7 @@ dnl -------------------------------------------------------------------
 dnl Check for functions before libevent, since libevent-1.2 apparently
 dnl exports strlcpy without defining it in a header.
 
-AC_CHECK_FUNCS(gettimeofday ftime socketpair uname inet_aton strptime getrlimit strlcat strlcpy strtoull getaddrinfo localtime_r gmtime_r memmem strtok_r writev readv flock prctl vasprintf)
+AC_CHECK_FUNCS(gettimeofday ftime socketpair uname inet_aton strptime getrlimit strlcat strlcpy strtoull getaddrinfo localtime_r gmtime_r memmem strtok_r writev readv flock prctl vasprintf lround rint)
 
 using_custom_malloc=no
 if test x$enable_openbsd_malloc = xyes ; then

+ 5 - 3
src/common/util.c

@@ -334,10 +334,12 @@ tor_mathlog(double d)
 long
 tor_lround(double d)
 {
-#ifdef _MSC_VER
-  return (long)(d > 0 ? d + 0.5 : ceil(d - 0.5));
-#else
+#if defined(HAVE_LROUND)
   return lround(d);
+#elif defined(HAVE_RINT)
+  return (long)rint(d);
+#else
+  return (long)(d > 0 ? d + 0.5 : ceil(d - 0.5));
 #endif
 }