Commit 41200b47 authored by Nick Mathewson's avatar Nick Mathewson 🎨
Browse files

Have autoconf check whether enums are signed.

Fixes bug 7727; fix on 0.2.4.10-alpha.
parent 0e597471
......@@ -2,3 +2,6 @@
- Use Ville Laurikari's implementation of AX_CHECK_SIGN() to determine
the signs of types during autoconf. This is better than our old
approach, which didn't work when cross-compiling.
- Detect the sign of enum values, rather than assuming that MSC is the
only compiler where enum types are all signed. Fix for bug 7727;
bugfix on 0.2.4.10-alpha.
......@@ -984,6 +984,12 @@ if test "$tor_cv_size_t_signed" = yes; then
AC_MSG_ERROR([You have a signed size_t; that's grossly nonconformant.])
fi
AX_CHECK_SIGN([enum always],
[ AC_DEFINE(ENUM_VALS_ARE_SIGNED, 1, [Define if enum is always signed]) ],
[ : ], [
enum always { AAA, BBB, CCC };
])
AC_CHECK_SIZEOF(socklen_t, , [AC_INCLUDES_DEFAULT()
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
......
......@@ -136,8 +136,7 @@ extern INLINE double U64_TO_DBL(uint64_t x) {
#define DBL_TO_U64(x) ((uint64_t) (x))
#endif
#if defined(_MSC_VER)
/* XXXX024 we should instead have a more general check for "Is enum signed?"*/
#ifdef ENUM_VALS_ARE_SIGNED
#define ENUM_BF(t) unsigned
#else
/** Wrapper for having a bitfield of an enumerated type. Where possible, we
......
......@@ -256,3 +256,4 @@
#define CURVE25519_ENABLED
#define USE_CURVE25519_DONNA
#define ENUM_VALS_ARE_SIGNED 1
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