diff options
author | Moritz Bunkus <moritz@bunkus.org> | 2017-07-09 15:22:02 (GMT) |
---|---|---|
committer | Moritz Bunkus <moritz@bunkus.org> | 2017-07-09 17:08:23 (GMT) |
commit | ad41e91045a6c97b7162b5ea3070d18a7f678cd7 (patch) | |
tree | 272647b783bbfd7aeaf369a2b5cf300f3591d75b /src | |
parent | e2ecdb2d1584c0757b33cf6758b0240aa354736e (diff) | |
download | mxe-ad41e91045a6c97b7162b5ea3070d18a7f678cd7.zip mxe-ad41e91045a6c97b7162b5ea3070d18a7f678cd7.tar.gz mxe-ad41e91045a6c97b7162b5ea3070d18a7f678cd7.tar.bz2 |
log4cxx: fix invalid narrowing conversion tripping up g++ >= 6
g++ 6 is stricter regarding narrowing conversions in initializer
lists. This causes errors similar to the following during compilation
with the gcc6 or gcc7 overlays:
locationinfo.cpp:163:21: error: narrowing conversion of '237'
from 'int' to 'char' inside { } [-Wnarrowing]
This has already been fixed upstream in several consecutive patches,
but there's no release including those fixes yet. This patch consists
of the essence of said fixes.
Diffstat (limited to 'src')
-rw-r--r-- | src/log4cxx-5-gcc6-fix-narrowing-conversion.patch | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/src/log4cxx-5-gcc6-fix-narrowing-conversion.patch b/src/log4cxx-5-gcc6-fix-narrowing-conversion.patch new file mode 100644 index 0000000..48c744e --- /dev/null +++ b/src/log4cxx-5-gcc6-fix-narrowing-conversion.patch @@ -0,0 +1,105 @@ +diff --git a/src/main/cpp/locationinfo.cpp b/src/main/cpp/locationinfo.cpp +index e76ea29..1cdcf24 100644 +--- a/src/main/cpp/locationinfo.cpp ++++ b/src/main/cpp/locationinfo.cpp +@@ -148,7 +148,7 @@ void LocationInfo::write(ObjectOutputStream& os, Pool& p) const { + if (lineNumber == -1 && fileName == NA && methodName == NA_METHOD) { + os.writeNull(p); + } else { +- char prolog[] = { ++ unsigned char prolog[] = { + 0x72, 0x00, 0x21, 0x6F, 0x72, 0x67, 0x2E, + 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2E, 0x6C, + 0x6F, 0x67, 0x34, 0x6A, 0x2E, 0x73, 0x70, 0x69, +@@ -161,7 +161,7 @@ void LocationInfo::write(ObjectOutputStream& os, Pool& p) const { + 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, + 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3B, + 0x78, 0x70 }; +- os.writeProlog("org.apache.log4j.spi.LocationInfo", 2, prolog, sizeof(prolog), p); ++ os.writeProlog("org.apache.log4j.spi.LocationInfo", 2, (char *)prolog, sizeof(prolog), p); + char* line = p.itoa(lineNumber); + // + // construct Java-like fullInfo (replace "::" with ".") +diff --git a/src/main/cpp/loggingevent.cpp b/src/main/cpp/loggingevent.cpp +index 1c0d4be..8bd07a8 100644 +--- a/src/main/cpp/loggingevent.cpp ++++ b/src/main/cpp/loggingevent.cpp +@@ -236,7 +236,7 @@ void LoggingEvent::setProperty(const LogString& key, const LogString& value) + + + void LoggingEvent::writeProlog(ObjectOutputStream& os, Pool& p) { +- char classDesc[] = { ++ unsigned char classDesc[] = { + 0x72, 0x00, 0x21, + 0x6F, 0x72, 0x67, 0x2E, 0x61, 0x70, 0x61, 0x63, + 0x68, 0x65, 0x2E, 0x6C, 0x6F, 0x67, 0x34, 0x6A, +@@ -292,7 +292,7 @@ void LoggingEvent::writeProlog(ObjectOutputStream& os, Pool& p) { + 0x3B, 0x78, 0x70 }; + + os.writeProlog("org.apache.log4j.spi.LoggingEvent", +- 8, classDesc, sizeof(classDesc), p); ++ 8, (char *)classDesc, sizeof(classDesc), p); + } + + void LoggingEvent::write(helpers::ObjectOutputStream& os, Pool& p) const { +diff --git a/src/main/cpp/objectoutputstream.cpp b/src/main/cpp/objectoutputstream.cpp +index 7cd696b..677d831 100644 +--- a/src/main/cpp/objectoutputstream.cpp ++++ b/src/main/cpp/objectoutputstream.cpp +@@ -36,8 +36,8 @@ ObjectOutputStream::ObjectOutputStream(OutputStreamPtr outputStream, Pool& p) + objectHandle(0x7E0000), + classDescriptions(new ClassDescriptionMap()) + { +- char start[] = { 0xAC, 0xED, 0x00, 0x05 }; +- ByteBuffer buf(start, sizeof(start)); ++ unsigned char start[] = { 0xAC, 0xED, 0x00, 0x05 }; ++ ByteBuffer buf((char *)start, sizeof(start)); + os->write(buf, p); + } + +@@ -81,7 +81,7 @@ void ObjectOutputStream::writeObject(const MDC::Map& val, Pool& p) { + // + // TC_OBJECT and the classDesc for java.util.Hashtable + // +- char prolog[] = { ++ unsigned char prolog[] = { + 0x72, 0x00, 0x13, 0x6A, 0x61, 0x76, 0x61, + 0x2E, 0x75, 0x74, 0x69, 0x6C, 0x2E, 0x48, 0x61, + 0x73, 0x68, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x13, +@@ -90,7 +90,7 @@ void ObjectOutputStream::writeObject(const MDC::Map& val, Pool& p) { + 0x64, 0x46, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x49, + 0x00, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6F, 0x6C, 0x64, 0x78, 0x70 }; +- writeProlog("java.util.Hashtable", 1, prolog, sizeof(prolog), p); ++ writeProlog("java.util.Hashtable", 1, (char *)prolog, sizeof(prolog), p); + // + // loadFactor = 0.75, threshold = 5, blockdata start, buckets.size = 7 + char data[] = { 0x3F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, +diff --git a/src/test/cpp/xml/domtestcase.cpp b/src/test/cpp/xml/domtestcase.cpp +index a500628..29d67dd 100644 +--- a/src/test/cpp/xml/domtestcase.cpp ++++ b/src/test/cpp/xml/domtestcase.cpp +@@ -190,9 +190,9 @@ public: + DOMConfigurator::configure(LOG4CXX_TEST_STR("input/xml/DOMTestCase3.xml")); + LOG4CXX_INFO(logger, "File name is expected to end with a superscript 3"); + #if LOG4CXX_LOGCHAR_IS_UTF8 +- const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0xC2, 0xB3, 0 }; ++ const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, static_cast<logchar>(0xC2), static_cast<logchar>(0xB3), 0 }; + #else +- const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0xB3, 0 }; ++ const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, static_cast<logchar>(0xB3), 0 }; + #endif + File file; + file.setPath(fname); +@@ -209,9 +209,9 @@ public: + DOMConfigurator::configure(LOG4CXX_TEST_STR("input/xml/DOMTestCase4.xml")); + LOG4CXX_INFO(logger, "File name is expected to end with an ideographic 4"); + #if LOG4CXX_LOGCHAR_IS_UTF8 +- const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0xE3, 0x86, 0x95, 0 }; ++ const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, static_cast<logchar>(0xE3), static_cast<logchar>(0x86), static_cast<logchar>(0x95), 0 }; + #else +- const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0x3195, 0 }; ++ const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, static_cast<logchar>(0x3195), 0 }; + #endif + File file; + file.setPath(fname); |