This is an automated email from the ASF dual-hosted git repository. swebb2066 pushed a commit to branch wchar_t_encoding_optimization in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git
commit f294da38dd055707d7af26b1190b782f08073a79 Author: Stephen Webb <[email protected]> AuthorDate: Fri Mar 20 12:18:05 2026 +1100 Optimise conversion to wchar_t when LOG4CXX_CHAR=wchar_t --- src/main/cpp/odbcappender.cpp | 4 ++-- src/main/cpp/transcoder.cpp | 14 +++++++------- src/main/include/log4cxx/db/odbcappender.h | 2 +- src/main/include/log4cxx/helpers/transcoder.h | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/cpp/odbcappender.cpp b/src/main/cpp/odbcappender.cpp index dc3ec235..fcffe308 100644 --- a/src/main/cpp/odbcappender.cpp +++ b/src/main/cpp/odbcappender.cpp @@ -536,7 +536,7 @@ void ODBCAppender::ODBCAppenderPriv::setParameterValues(const spi::LoggingEventP { LogString sbuf; item.converter->format(event, sbuf, p); -#if LOG4CXX_LOGCHAR_IS_WCHAR_T +#if LOG4CXX_LOGCHAR_IS_WCHAR std::wstring& tmp = sbuf; #else std::wstring tmp; @@ -658,7 +658,7 @@ void ODBCAppender::setSql(const LogString& s) _priv->sqlStatement = s; } -#if LOG4CXX_WCHAR_T_API || LOG4CXX_LOGCHAR_IS_WCHAR_T || defined(WIN32) || defined(_WIN32) +#if LOG4CXX_WCHAR_T_API || LOG4CXX_LOGCHAR_IS_WCHAR || defined(WIN32) || defined(_WIN32) void ODBCAppender::encode(wchar_t** dest, const LogString& src, Pool& p) { *dest = Transcoder::wencode(src, p); diff --git a/src/main/cpp/transcoder.cpp b/src/main/cpp/transcoder.cpp index 55903af1..6a92de33 100644 --- a/src/main/cpp/transcoder.cpp +++ b/src/main/cpp/transcoder.cpp @@ -379,7 +379,7 @@ void Transcoder::encode(const LogString& src, std::string& dst) iter != src.end() && ((unsigned int) *iter) < 0x80; iter++) { - dst.append(1, *iter); + dst.append(1, static_cast<char>(*iter)); } #endif @@ -478,11 +478,11 @@ static void encodeUTF16(unsigned int sv, String& dst) -#if LOG4CXX_WCHAR_T_API || LOG4CXX_LOGCHAR_IS_WCHAR_T || defined(WIN32) || defined(_WIN32) +#if LOG4CXX_WCHAR_T_API || LOG4CXX_LOGCHAR_IS_WCHAR || defined(WIN32) || defined(_WIN32) void Transcoder::decode(const std::wstring& src, LogString& dst) { -#if LOG4CXX_LOGCHAR_IS_WCHAR_T - dst.append(src, len); +#if LOG4CXX_LOGCHAR_IS_WCHAR + dst.append(src); #else std::wstring::const_iterator i = src.begin(); @@ -506,7 +506,7 @@ void Transcoder::decode(const std::wstring& src, LogString& dst) void Transcoder::encode(const LogString& src, std::wstring& dst) { -#if LOG4CXX_LOGCHAR_IS_WCHAR_T +#if LOG4CXX_LOGCHAR_IS_WCHAR dst.append(src); #else @@ -530,8 +530,8 @@ void Transcoder::encode(const LogString& src, std::wstring& dst) wchar_t* Transcoder::wencode(const LogString& src, Pool& p) { -#if LOG4CXX_LOGCHAR_IS_WCHAR_T - std::wstring& tmp = src; +#if LOG4CXX_LOGCHAR_IS_WCHAR + const std::wstring& tmp = src; #else std::wstring tmp; encode(src, tmp); diff --git a/src/main/include/log4cxx/db/odbcappender.h b/src/main/include/log4cxx/db/odbcappender.h index 5a58cb3c..1cddc8d1 100644 --- a/src/main/include/log4cxx/db/odbcappender.h +++ b/src/main/include/log4cxx/db/odbcappender.h @@ -268,7 +268,7 @@ class LOG4CXX_EXPORT ODBCAppender : public AppenderSkeleton private: ODBCAppender(const ODBCAppender&); ODBCAppender& operator=(const ODBCAppender&); -#if LOG4CXX_WCHAR_T_API || LOG4CXX_LOGCHAR_IS_WCHAR_T || defined(WIN32) || defined(_WIN32) +#if LOG4CXX_WCHAR_T_API || LOG4CXX_LOGCHAR_IS_WCHAR || defined(WIN32) || defined(_WIN32) static void encode(wchar_t** dest, const LogString& src, LOG4CXX_NS::helpers::Pool& p); #endif diff --git a/src/main/include/log4cxx/helpers/transcoder.h b/src/main/include/log4cxx/helpers/transcoder.h index 182847dd..20894283 100644 --- a/src/main/include/log4cxx/helpers/transcoder.h +++ b/src/main/include/log4cxx/helpers/transcoder.h @@ -105,7 +105,7 @@ class LOG4CXX_EXPORT Transcoder -#if LOG4CXX_WCHAR_T_API || LOG4CXX_LOGCHAR_IS_WCHAR_T || defined(WIN32) || defined(_WIN32) +#if LOG4CXX_WCHAR_T_API || LOG4CXX_LOGCHAR_IS_WCHAR || defined(WIN32) || defined(_WIN32) static void decode(const std::wstring& src, LogString& dst); static void encode(const LogString& src, std::wstring& dst); static wchar_t* wencode(const LogString& src, LOG4CXX_NS::helpers::Pool& p);
