Commit b4ebe55d authored by Nick Mathewson's avatar Nick Mathewson 🎨
Browse files

r13971@tombo: nickm | 2008-01-30 14:25:25 -0500

 Write a new autoconf macro to test whether a function is declared. It is suboptimal and possibly buggy in some way, but it seems to work for me.  use it to test for a declaration of malloc_good_size, so we can workaround operating systems (like older OSX) that have the function in their libc but do not deign to declare it in their headers.  Should resolve bug 587.

parent 0b065466
......@@ -5,6 +5,9 @@ Changes in version - 2008-0?-??
recognize them. Fixes bug 571. Bugfix on 0.2.0.x.
- Stop recommending that every server operator send mail to tor-ops.
Resolves bug 597. Bugfix on 0.1.2.x.
- Detect version of OSX where malloc_good_size is present in the
library but never actually declared. Resolves bug 587. Bugfix
on 0.2.0.x.
Changes in version - 2008-01-25
......@@ -193,3 +193,17 @@ CPPFLAGS="$tor_saved_CPPFLAGS"
]) dnl end defun
dnl Check whether the prototype for a function is present or missing.
dnl Apple has a nasty habit of putting functions in their libraries (so that
dnl AC_CHECK_FUNCS passes) but not actually declaring them in the headers.
dnl TOR_CHECK_PROTYPE(1:functionname, 2:macroname, 2: includes)
AC_CACHE_CHECK([for declaration of $1], tor_cv_$1_declared, [
AC_COMPILE_IFELSE(AC_LANG_PROGRAM([$3],[void *ptr= $1 ;]),
if test x$tor_cv_$1_declared != xno ; then
AC_DEFINE($2, 1,
[Defined if the prototype for $1 seems to be present.])
\ No newline at end of file
......@@ -275,6 +275,14 @@ dnl These headers are not essential
AC_CHECK_HEADERS(stdint.h sys/types.h inttypes.h sys/param.h sys/wait.h limits.h sys/limits.h netinet/in.h arpa/inet.h machine/limits.h syslog.h sys/time.h sys/resource.h inttypes.h utime.h sys/utime.h sys/mman.h netintet/in.h netinet/in6.h malloc.h sys/syslimits.h malloc/malloc.h)
#include <malloc.h>
#include <malloc/malloc.h>
AC_CHECK_HEADERS(net/if.h, net_if_found=1, net_if_found=0,
#include <sys/types.h>
......@@ -224,6 +224,14 @@ _tor_free(void *mem)
/* Some version of Mac OSX have malloc_good_size in their libc, but not
* actually defined in malloc/malloc.h. We detect this and work around it by
* prototyping.
extern size_t malloc_good_size(size_t size);
/** Allocate and return a chunk of memory of size at least *<b>size</p>, using
* the same resources we would use to malloc *<b>sizep</b>. Set *<b>sizep</b>
* to the number of usable bytes in the chunk of memory. */
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment