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);

Reply via email to