This is an automated email from the ASF dual-hosted git repository.

swebb2066 pushed a commit to branch fix_logchar_unichar
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git

commit a68bca371a917881045f83dc93b45b6f2eedb184
Author: Stephen Webb <[email protected]>
AuthorDate: Mon Jun 8 16:13:19 2026 +1000

    Fix compilation errors when using LOG4CXX_CHAR=unicode
---
 .github/workflows/log4cxx-ubuntu.yml | 5 +++--
 src/main/cpp/asyncbuffer.cpp         | 4 +++-
 src/main/cpp/smtpappender.cpp        | 2 +-
 src/main/cpp/threadutility.cpp       | 8 ++++----
 4 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/.github/workflows/log4cxx-ubuntu.yml 
b/.github/workflows/log4cxx-ubuntu.yml
index 71899d10..56faadac 100644
--- a/.github/workflows/log4cxx-ubuntu.yml
+++ b/.github/workflows/log4cxx-ubuntu.yml
@@ -37,7 +37,7 @@ jobs:
             multithread: OFF
             exitevents: OFF
             fuzzers: OFF
-            logchar: utf-8
+            logchar: unicode
             next_abi: OFF
           - name: ubuntu22-clang
             os: ubuntu-22.04
@@ -107,6 +107,7 @@ jobs:
       run: |
         ROOT=`pwd`
         set -x
+        [ ${{ matrix.logchar }} == unicode ] && 
OPTIONAL_API=-DLOG4CXX_UNICHAR=1
         cmake \
           -DCMAKE_CXX_COMPILER=${{ matrix.cxx }} \
           -DLOG4CXX_TEST_ONLY_BUILD=1 \
@@ -116,7 +117,7 @@ jobs:
           -DLOG4CXX_MULTIPROCESS_ROLLING_FILE_APPENDER=${{ matrix.multiprocess 
}} \
           -DLOG4CXX_EVENTS_AT_EXIT=${{ matrix.exitevents }} \
           -DBUILD_FUZZERS=${{ matrix.fuzzers }} \
-          -DLOG4CXX_CHAR=${{ matrix.logchar }} \
+          -DLOG4CXX_CHAR=${{ matrix.logchar }} $OPTIONAL_API \
           -DLOG4CXX_BUILD_NEXT_ABI=${{ matrix.next_abi }} \
           -DCMAKE_INSTALL_PREFIX=$ROOT/lib \
           -S $ROOT/main \
diff --git a/src/main/cpp/asyncbuffer.cpp b/src/main/cpp/asyncbuffer.cpp
index 56c6d425..54d72708 100644
--- a/src/main/cpp/asyncbuffer.cpp
+++ b/src/main/cpp/asyncbuffer.cpp
@@ -159,7 +159,7 @@ void AsyncBuffer::renderMessage(LogCharMessageBuffer& msg) 
const
                                LOG4CXX_DECODE_WCHAR(lsMsg, 
wideBuf.extract_str(wideBuf));
                                msg << lsMsg;
                        }
-#else // !LOG4CXX_LOGCHAR_IS_UTF8
+#elif LOG4CXX_LOGCHAR_IS_WCHAR
                        if (auto pRenderer = 
std::get_if<WideMessageBufferAppender>(&renderer))
                                (*pRenderer)(msg);
                        else
@@ -169,6 +169,8 @@ void AsyncBuffer::renderMessage(LogCharMessageBuffer& msg) 
const
                                LOG4CXX_DECODE_CHAR(lsMsg, 
narrowBuf.extract_str(narrowBuf));
                                msg << lsMsg;
                        }
+#else
+                       msg << LOG4CXX_STR("Unichar is not supported");
 #endif // !LOG4CXX_LOGCHAR_IS_UTF8
                }
 #else // !LOG4CXX_CONCEPTS
diff --git a/src/main/cpp/smtpappender.cpp b/src/main/cpp/smtpappender.cpp
index 496c3d53..079d85fa 100644
--- a/src/main/cpp/smtpappender.cpp
+++ b/src/main/cpp/smtpappender.cpp
@@ -54,7 +54,7 @@ namespace
 // owns SMTP wire-format sanitization (see SMTPSession::toAscii, which silently
 // rewrites non-ASCII to '?'); strip CR/LF in the public setters so the same
 // boundary is enforced regardless of how the value reaches the appender.
-LogString stripSmtpControl(const LogString& value, const logchar* field)
+LogString stripSmtpControl(const LogString& value, const LogString& field)
 {
        if (value.find_first_of(LOG4CXX_STR("\r\n")) == LogString::npos)
        {
diff --git a/src/main/cpp/threadutility.cpp b/src/main/cpp/threadutility.cpp
index 4ea4c078..acdd57e4 100644
--- a/src/main/cpp/threadutility.cpp
+++ b/src/main/cpp/threadutility.cpp
@@ -189,7 +189,7 @@ void ThreadUtility::preThreadBlockSignals()
 
        if ( pthread_sigmask(SIG_SETMASK, &set, &old_mask) < 0 )
        {
-               LOGLOG_ERROR( LOG4CXX_STR("Unable to set thread sigmask") );
+               LogLog::error( LOG4CXX_STR("Unable to set thread sigmask") );
                sigmask_valid = false;
        }
        else
@@ -207,7 +207,7 @@ void ThreadUtility::threadStartedNameThread(LogString 
threadName,
 #if LOG4CXX_HAS_PTHREAD_SETNAME && !(defined(_WIN32) && 
defined(_LIBCPP_VERSION))
        LOG4CXX_ENCODE_CHAR(sthreadName, threadName);
        if (pthread_setname_np(static_cast<pthread_t>(nativeHandle), 
sthreadName.c_str()) < 0) {
-               LOGLOG_ERROR(LOG4CXX_STR("unable to set thread name"));
+               LogLog::error(LOG4CXX_STR("Unable to set thread name"));
        }
 #elif defined(_WIN32)
        typedef HRESULT (WINAPI *TSetThreadDescription)(HANDLE, PCWSTR);
@@ -227,7 +227,7 @@ void ThreadUtility::threadStartedNameThread(LogString 
threadName,
        {
                LOG4CXX_ENCODE_WCHAR(wthreadName, threadName);
                
if(FAILED(win32Func.SetThreadDescription(static_cast<HANDLE>(nativeHandle), 
wthreadName.c_str())))
-                       LOGLOG_ERROR( LOG4CXX_STR("unable to set thread name") 
);
+                       LogLog::error( LOG4CXX_STR(Unable to set thread name") 
);
        }
 #endif
 }
@@ -241,7 +241,7 @@ void ThreadUtility::postThreadUnblockSignals()
        {
                if ( pthread_sigmask(SIG_SETMASK, &old_mask, nullptr) < 0 )
                {
-                       LOGLOG_ERROR( LOG4CXX_STR("Unable to set thread 
sigmask") );
+                       LogLog::error( LOG4CXX_STR("Unable to set thread 
sigmask") );
                }
        }
 

Reply via email to