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

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

commit 4fc2e7e0066dfb22d5d314b626abefcc99cc05d7
Author: Stephen Webb <[email protected]>
AuthorDate: Thu Aug 10 15:43:15 2023 +1000

    Prevent a deadlock when LOG4CXX_CHAR=utf-8 and LOG4CXX_CHARSET=EBCDIC
---
 src/main/cpp/charsetdecoder.cpp | 3 +--
 src/main/cpp/charsetencoder.cpp | 3 +--
 src/main/cpp/exception.cpp      | 3 +--
 3 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/main/cpp/charsetdecoder.cpp b/src/main/cpp/charsetdecoder.cpp
index b400e41a..26a099df 100644
--- a/src/main/cpp/charsetdecoder.cpp
+++ b/src/main/cpp/charsetdecoder.cpp
@@ -466,8 +466,7 @@ class LocaleCharsetDecoder : public CharsetDecoder
 
                                                try
                                                {
-                                                       LogString e;
-                                                       
Transcoder::decode(encoding, e);
+                                                       LOG4CXX_DECODE_CHAR(e, 
encoding);
                                                        decoder = getDecoder(e);
                                                }
                                                catch 
(IllegalArgumentException&)
diff --git a/src/main/cpp/charsetencoder.cpp b/src/main/cpp/charsetencoder.cpp
index ee5f5ff7..010a6ec1 100644
--- a/src/main/cpp/charsetencoder.cpp
+++ b/src/main/cpp/charsetencoder.cpp
@@ -494,8 +494,7 @@ class LocaleCharsetEncoder : public CharsetEncoder
                                        else if (encoding != enc)
                                        {
                                                encoding = enc;
-                                               LogString ename;
-                                               Transcoder::decode(encoding, 
ename);
+                                               LOG4CXX_DECODE_CHAR(ename, 
encoding);
 
                                                try
                                                {
diff --git a/src/main/cpp/exception.cpp b/src/main/cpp/exception.cpp
index 2adf3708..5daed641 100644
--- a/src/main/cpp/exception.cpp
+++ b/src/main/cpp/exception.cpp
@@ -29,8 +29,7 @@ using namespace log4cxx::helpers;
 
 Exception::Exception(const LogString& msg1)
 {
-       std::string m;
-       Transcoder::encode(msg1, m);
+       LOG4CXX_ENCODE_CHAR(m, msg1);
        size_t len = m.size();
 
        if (len > MSG_SIZE)

Reply via email to