summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2004-10-16 20:26:12 +0000
committerNick Mathewson <nickm@torproject.org>2004-10-16 20:26:12 +0000
commitf619c4603ea7c4dcd66fe67ce6ff76502af11865 (patch)
treeb87c1fc37be02631be2b586bf52c0d6c9ba03778
parent56a592dbe36701bbfdc262866d35ed34a265925e (diff)
downloadtor-f619c4603ea7c4dcd66fe67ce6ff76502af11865.tar.gz
tor-f619c4603ea7c4dcd66fe67ce6ff76502af11865.zip
Add an autoconf test to make sure that memset(&ptr, 0, sizeof(ptr)) and ptr=NULL are equivalent
svn:r2536
-rw-r--r--configure.in15
-rw-r--r--src/common/util.h4
-rw-r--r--src/win32/orconfig.h6
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. */