diff options
-rw-r--r-- | configure.in | 15 | ||||
-rw-r--r-- | src/common/util.h | 4 | ||||
-rw-r--r-- | src/win32/orconfig.h | 6 |
3 files changed, 23 insertions, 2 deletions
diff --git a/configure.in b/configure.in index 9e4051c828..0cf8a7d538 100644 --- a/configure.in +++ b/configure.in @@ -195,6 +195,21 @@ if test $tor_cv_unaligned_ok = yes; then [Define to 1 iff unaligned int access is allowed]) fi +# Now make sure that NULL can be represented as zero bytes. +AC_CACHE_CHECK([whether memset(0) sets pointers to NULL], tor_cv_null_is_zero, +[AC_RUN_IFELSE([AC_LANG_SOURCE( +[[#include <stdlib.h> +int main () { char *p1,*p2; p1=NULL; memset(&p2,0,sizeof(p2)); +return memcmp(&p1,&p2,sizeof(char*)); }]])], + [tor_cv_null_is_zero=yes], + [tor_cv_null_is_zero=no], + [tor_cv_null_is_zero=cross])]) + +if test $tor_cv_null_is_zero = yes; then + AC_DEFINE([NULL_REP_IS_ZERO_BYTES], 1, + [Define to 1 iff memset(0) sets pointers to NULL]) +fi + # $prefix stores the value of the --prefix command line option, or # NONE if the option wasn't set. In the case that it wasn't set, make # it be the default, so that we can use it to expand directories now. diff --git a/src/common/util.h b/src/common/util.h index 5e3a95d4b6..99f326d26d 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -20,6 +20,10 @@ #include <time.h> #endif +#ifndef NULL_REP_IS_ZERO_BYTES +#error "It seems your platform does not represent NULL as zero. We can't cope." +#endif + #if _MSC_VER > 1300 #include <winsock2.h> #include <ws2tcpip.h> diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h index 88d6d8c4e6..dc7bb90224 100644 --- a/src/win32/orconfig.h +++ b/src/win32/orconfig.h @@ -124,11 +124,13 @@ /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H +/* Define to 1 iff unaligned int access is allowed */ +#define NULL_REP_IS_ZERO_BYTES 1 + /* Name of package */ #define PACKAGE "tor" -/* Def -ine to the address where bug reports for this package should be sent. */ +/* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ |