diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2007-11-16 19:06:40 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2007-11-16 19:06:40 (GMT) |
commit | beaea73fa0ffbd5f2fbc839e9c9135f9bc0b3280 (patch) | |
tree | 2d5339edfcc8275fb9111fa2de5ba210757bfeb1 /Utilities | |
parent | 96bf9b372a391b428fb0ac44d566729fd6294cdf (diff) | |
download | CMake-beaea73fa0ffbd5f2fbc839e9c9135f9bc0b3280.zip CMake-beaea73fa0ffbd5f2fbc839e9c9135f9bc0b3280.tar.gz CMake-beaea73fa0ffbd5f2fbc839e9c9135f9bc0b3280.tar.bz2 |
ENH: add a try compile for va_copy
Diffstat (limited to 'Utilities')
-rw-r--r-- | Utilities/cmxmlrpc/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Utilities/cmxmlrpc/xmlrpc_config.h.in | 2 | ||||
-rw-r--r-- | Utilities/cmxmlrpc/xmlrpc_data.c | 10 |
3 files changed, 11 insertions, 3 deletions
diff --git a/Utilities/cmxmlrpc/CMakeLists.txt b/Utilities/cmxmlrpc/CMakeLists.txt index a29e0bd..e3f42c8 100644 --- a/Utilities/cmxmlrpc/CMakeLists.txt +++ b/Utilities/cmxmlrpc/CMakeLists.txt @@ -44,6 +44,8 @@ INCLUDE (TryCompileFromSource) SET(HEADER_INCLUDES "${CURRENT_INCLUDES}") TRY_COMPILE_FROM_SOURCE("va_list list1, list2; list1 = list2" VA_LIST_ISNOT_ARRAY_DEFINE) +TRY_COMPILE_FROM_SOURCE("va_list list1, list2; va_copy(list1, list2);" + HAS_VA_COPY) SET(VA_LIST_IS_ARRAY_DEFINE 0) IF(NOT VA_LIST_ISNOT_ARRAY_DEFINE) SET(VA_LIST_IS_ARRAY_DEFINE 1) diff --git a/Utilities/cmxmlrpc/xmlrpc_config.h.in b/Utilities/cmxmlrpc/xmlrpc_config.h.in index d940e4d..9683c1e 100644 --- a/Utilities/cmxmlrpc/xmlrpc_config.h.in +++ b/Utilities/cmxmlrpc/xmlrpc_config.h.in @@ -22,6 +22,8 @@ #define VA_LIST_IS_ARRAY @VA_LIST_IS_ARRAY_DEFINE@ +#cmakedefine HAS_VA_COPY @HAS_VA_COPY@ + #define HAVE_LIBWWW_SSL @HAVE_LIBWWW_SSL_DEFINE@ #define ATTR_UNUSED @ATTR_UNUSED@ diff --git a/Utilities/cmxmlrpc/xmlrpc_data.c b/Utilities/cmxmlrpc/xmlrpc_data.c index 0d3c3ca..456d8e4 100644 --- a/Utilities/cmxmlrpc/xmlrpc_data.c +++ b/Utilities/cmxmlrpc/xmlrpc_data.c @@ -24,10 +24,14 @@ typedef double va_double; ** tricky fashions. We don't why Python does this, but since we're ** abusing our va_list objects in a similar fashion, we'll copy them ** too. */ -#if VA_LIST_IS_ARRAY -#define VA_LIST_COPY(dest,src) memcpy((dest), (src), sizeof(va_list)) +#ifdef HAS_VA_COPY +# define VA_LIST_COPY(dest,src) va_copy((dest), (src)) #else -#define VA_LIST_COPY(dest,src) ((dest) = (src)) +# if VA_LIST_IS_ARRAY +# define VA_LIST_COPY(dest,src) memcpy((dest), (src), sizeof(va_list)) +# else +# define VA_LIST_COPY(dest,src) ((dest) = (src)) +# endif #endif |