From 430419705b8c0180c612993cc9a6c13a5a815779 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 13 Dec 2022 18:48:10 +0000 Subject: [PATCH] Simplify snprintf workaround usage. Via boost/core/snprintf.hpp Remove some obsolete workarounds. Remove tabs in files. Supersedes https://github.com/boostorg/regex/pull/188. --- include/boost/regex/v4/regex_workaround.hpp | 14 +++++----- include/boost/regex/v5/regex_workaround.hpp | 14 +++++----- src/posix_api.cpp | 30 +++++---------------- src/wide_posix_api.cpp | 9 ------- 4 files changed, 21 insertions(+), 46 deletions(-) diff --git a/include/boost/regex/v4/regex_workaround.hpp b/include/boost/regex/v4/regex_workaround.hpp index 35eafc25..324136e0 100644 --- a/include/boost/regex/v4/regex_workaround.hpp +++ b/include/boost/regex/v4/regex_workaround.hpp @@ -198,10 +198,10 @@ namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ const char *strSource ) { - std::size_t lenSourceWithNull = std::strlen(strSource) + 1; - if (lenSourceWithNull > sizeInBytes) + std::size_t lenSourceWithNull = std::strlen(strSource) + 1; + if (lenSourceWithNull > sizeInBytes) return 1; - std::memcpy(strDestination, strSource, lenSourceWithNull); + std::memcpy(strDestination, strSource, lenSourceWithNull); return 0; } inline std::size_t strcat_s( @@ -210,11 +210,11 @@ namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ const char *strSource ) { - std::size_t lenSourceWithNull = std::strlen(strSource) + 1; - std::size_t lenDestination = std::strlen(strDestination); - if (lenSourceWithNull + lenDestination > sizeInBytes) + std::size_t lenSourceWithNull = std::strlen(strSource) + 1; + std::size_t lenDestination = std::strlen(strDestination); + if (lenSourceWithNull + lenDestination > sizeInBytes) return 1; - std::memcpy(strDestination + lenDestination, strSource, lenSourceWithNull); + std::memcpy(strDestination + lenDestination, strSource, lenSourceWithNull); return 0; } diff --git a/include/boost/regex/v5/regex_workaround.hpp b/include/boost/regex/v5/regex_workaround.hpp index e9ca79d4..8cd9044c 100644 --- a/include/boost/regex/v5/regex_workaround.hpp +++ b/include/boost/regex/v5/regex_workaround.hpp @@ -116,10 +116,10 @@ namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ const char *strSource ) { - std::size_t lenSourceWithNull = std::strlen(strSource) + 1; - if (lenSourceWithNull > sizeInBytes) + std::size_t lenSourceWithNull = std::strlen(strSource) + 1; + if (lenSourceWithNull > sizeInBytes) return 1; - std::memcpy(strDestination, strSource, lenSourceWithNull); + std::memcpy(strDestination, strSource, lenSourceWithNull); return 0; } inline std::size_t strcat_s( @@ -128,11 +128,11 @@ namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ const char *strSource ) { - std::size_t lenSourceWithNull = std::strlen(strSource) + 1; - std::size_t lenDestination = std::strlen(strDestination); - if (lenSourceWithNull + lenDestination > sizeInBytes) + std::size_t lenSourceWithNull = std::strlen(strSource) + 1; + std::size_t lenDestination = std::strlen(strDestination); + if (lenSourceWithNull + lenDestination > sizeInBytes) return 1; - std::memcpy(strDestination + lenDestination, strSource, lenSourceWithNull); + std::memcpy(strDestination + lenDestination, strSource, lenSourceWithNull); return 0; } diff --git a/src/posix_api.cpp b/src/posix_api.cpp index 131171ab..e30f9d8e 100644 --- a/src/posix_api.cpp +++ b/src/posix_api.cpp @@ -22,19 +22,15 @@ #include #include -#if defined(BOOST_NO_STDC_NAMESPACE) -namespace std{ - using ::sprintf; - using ::strcpy; - using ::strcmp; -} -#endif - #ifndef BOOST_WORKAROUND #define BOOST_WORKAROUND(x, y) false #endif - +#ifndef BOOST_REGEX_STANDALONE +#include +#else +namespace boost { namespace core { using std::snprintf; } } +#endif namespace boost{ @@ -180,13 +176,7 @@ BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int code, const regex_tA* // We're converting an integer i to a string, and since i <= REG_E_UNKNOWN // a five character string is *always* large enough: // -#if !defined(BOOST_CXX_VERSION) || (BOOST_CXX_VERSION >= 201103) - int r = (std::snprintf)(localbuf, 5, "%d", i); -#elif BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE) - int r = (::sprintf_s)(localbuf, 5, "%d", i); -#else - int r = (std::sprintf)(localbuf, "%d", i); -#endif + int r = (boost::core::snprintf)(localbuf, 5, "%d", i); if(r < 0) return 0; // sprintf failed if(std::strlen(localbuf) < buf_size) @@ -194,13 +184,7 @@ BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int code, const regex_tA* return std::strlen(localbuf) + 1; } } -#if !defined(BOOST_CXX_VERSION) || (BOOST_CXX_VERSION >= 201103) - int r = (::snprintf)(localbuf, 5, "%d", 0); -#elif BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE) - int r = (::sprintf_s)(localbuf, 5, "%d", 0); -#else - int r = (std::sprintf)(localbuf, "%d", 0); -#endif + int r = (boost::core::snprintf)(localbuf, 5, "%d", 0); if(r < 0) return 0; // sprintf failed if(std::strlen(localbuf) < buf_size) diff --git a/src/wide_posix_api.cpp b/src/wide_posix_api.cpp index 8abb28e3..5ca4c7ae 100644 --- a/src/wide_posix_api.cpp +++ b/src/wide_posix_api.cpp @@ -37,15 +37,6 @@ #pragma warning(disable:981) #endif -#if defined(BOOST_NO_STDC_NAMESPACE) || defined(__NetBSD__) -namespace std{ -# ifndef BOOST_NO_SWPRINTF - using ::swprintf; -# endif -} -#endif - - namespace boost{ namespace {