From 29b88bcaf43fbfe3cedac275b9be8bfb8c3bedb0 Mon Sep 17 00:00:00 2001 From: Joerg Sonnenberger Date: Sat, 10 Jun 2017 18:00:23 +0200 Subject: [PATCH] Avoid undefined behavior. Macros expanding to defined() expressions are undefined, move the conditional logic to outside the expression. --- include/boost/archive/detail/iserializer.hpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/include/boost/archive/detail/iserializer.hpp b/include/boost/archive/detail/iserializer.hpp index 193e98a82..08dc43d9c 100644 --- a/include/boost/archive/detail/iserializer.hpp +++ b/include/boost/archive/detail/iserializer.hpp @@ -57,13 +57,12 @@ namespace std{ #include -#ifndef BOOST_MSVC - #define DONT_USE_HAS_NEW_OPERATOR ( \ - BOOST_WORKAROUND(__IBMCPP__, < 1210) \ - || defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x590) \ - ) +#if !defined(BOOST_MSVC) && \ + (BOOST_WORKAROUND(__IBMCPP__, < 1210) || \ + defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x590)) +#define DONT_USE_HAS_NEW_OPERATOR 1 #else - #define DONT_USE_HAS_NEW_OPERATOR 0 +#define DONT_USE_HAS_NEW_OPERATOR 0 #endif #if ! DONT_USE_HAS_NEW_OPERATOR