diff options
author | Ulrich Müller <ulm@gentoo.org> | 2017-12-01 21:23:04 +0100 |
---|---|---|
committer | Ulrich Müller <ulm@gentoo.org> | 2017-12-01 21:23:04 +0100 |
commit | e91c58f05f9ebb9cf9d15a1132356051b928fe22 (patch) | |
tree | 8db6b2ca60c0538ee3b6ccebb3a65d0d071d9543 /dev-libs/beecrypt | |
parent | app-admin/dxf: Version bump to 7.0.1 (diff) | |
download | gentoo-e91c58f05f9ebb9cf9d15a1132356051b928fe22.tar.gz gentoo-e91c58f05f9ebb9cf9d15a1132356051b928fe22.tar.bz2 gentoo-e91c58f05f9ebb9cf9d15a1132356051b928fe22.zip |
dev-libs/beecrypt: Fix compilation with >=dev-libs/icu-59.
Closes: https://bugs.gentoo.org/618676
Package-Manager: Portage-2.3.16, Repoman-2.3.6
Diffstat (limited to 'dev-libs/beecrypt')
-rw-r--r-- | dev-libs/beecrypt/Manifest | 2 | ||||
-rw-r--r-- | dev-libs/beecrypt/beecrypt-4.2.1-r4.ebuild | 1 | ||||
-rw-r--r-- | dev-libs/beecrypt/files/beecrypt-4.2.1-cast-uchar.patch | 214 |
3 files changed, 216 insertions, 1 deletions
diff --git a/dev-libs/beecrypt/Manifest b/dev-libs/beecrypt/Manifest index de57828f34db..0fc625fdb93f 100644 --- a/dev-libs/beecrypt/Manifest +++ b/dev-libs/beecrypt/Manifest @@ -1 +1 @@ -DIST beecrypt-4.2.1.tar.gz 882758 SHA256 286f1f56080d1a6b1d024003a5fa2158f4ff82cae0c6829d3c476a4b5898c55d SHA512 59995d53c024efe6344a21ac0d6d55fbe652488a4a22cc6719f9fc3851d56697fa8738937d48aa1e6f9ebe749de61ac3c79a5f0cea793872213c3bdf922e71bc WHIRLPOOL c4a0371d8e2cf37194800867c58e77d72bb59ab464fdff9c561230ece0f288dabdebfdd0ac13382c9ebe45b455ffbfdd81e6a15969dcb86d3d8c8e6635e294bb +DIST beecrypt-4.2.1.tar.gz 882758 BLAKE2B 7ca25613cf95df8657c762d932618979783ea2ddfbaecdf066701d61a5f9ac76bd474a51eb65e140c83ef01880477cb7104e3d67c2fc078ae7b710637d18bb53 SHA512 59995d53c024efe6344a21ac0d6d55fbe652488a4a22cc6719f9fc3851d56697fa8738937d48aa1e6f9ebe749de61ac3c79a5f0cea793872213c3bdf922e71bc diff --git a/dev-libs/beecrypt/beecrypt-4.2.1-r4.ebuild b/dev-libs/beecrypt/beecrypt-4.2.1-r4.ebuild index 4d835cb2cd94..69a3ccb8f34f 100644 --- a/dev-libs/beecrypt/beecrypt-4.2.1-r4.ebuild +++ b/dev-libs/beecrypt/beecrypt-4.2.1-r4.ebuild @@ -38,6 +38,7 @@ PATCHES=( # Fixes bug 596904 "${FILESDIR}"/${P}-c++11-allow-throw-in-destructors.patch + "${FILESDIR}"/${P}-cast-uchar.patch #618676 ) pkg_setup() { diff --git a/dev-libs/beecrypt/files/beecrypt-4.2.1-cast-uchar.patch b/dev-libs/beecrypt/files/beecrypt-4.2.1-cast-uchar.patch new file mode 100644 index 000000000000..8efedc01e4aa --- /dev/null +++ b/dev-libs/beecrypt/files/beecrypt-4.2.1-cast-uchar.patch @@ -0,0 +1,214 @@ +beecrypt's c++ api uses jchar arrays for strings, while ICU 59 expects +char16_t type + +In practice these both seem to be defined as short int on amd64 so it +might be okay to just reinterpret_cast them? There's probably no easy +way out on a platform where char16_t won't match jchar + +Patch by Valeriy Malov <jazzvoid@gmail.com> +https://bugs.gentoo.org/618676 + +--- a/c++/io/DataInputStream.cxx ++++ b/c++/io/DataInputStream.cxx +@@ -201,7 +201,7 @@ String DataInputStream::readUTF() throw (IOException) + jchar* buffer = new jchar[ulen+1]; + + status = U_ZERO_ERROR; +- ucnv_toUChars(_utf, buffer, ulen+1, (const char*) data, (jint) utflen, &status); ++ ucnv_toUChars(_utf, reinterpret_cast<UChar*>(buffer), ulen+1, (const char*) data, (jint) utflen, &status); + + delete[] data; + +@@ -232,7 +232,7 @@ String DataInputStream::readLine() throw (IOException) + + array<jchar> target_buffer(80); + jint target_offset = 0; +- UChar* target = target_buffer.data(); ++ UChar* target = reinterpret_cast<UChar*>(target_buffer.data()); + const UChar* target_limit = target+1; + char source_buffer[MAX_BYTES_PER_CHARACTER]; + const char* source = source_buffer; +--- a/c++/io/DataOutputStream.cxx ++++ b/c++/io/DataOutputStream.cxx +@@ -187,7 +187,7 @@ void DataOutputStream::writeUTF(const String& str) throw (IOException) + const array<jchar>& src = str.toCharArray(); + + // the expected status code here is U_BUFFER_OVERFLOW_ERROR +- jint need = ucnv_fromUChars(_utf, 0, 0, src.data(), src.size(), &status); ++ jint need = ucnv_fromUChars(_utf, 0, 0, reinterpret_cast<const UChar*>(src.data()), src.size(), &status); + if (U_FAILURE(status)) + if (status != U_BUFFER_OVERFLOW_ERROR) + throw IOException("ucnv_fromUChars failed"); +@@ -200,7 +200,7 @@ void DataOutputStream::writeUTF(const String& str) throw (IOException) + status = U_ZERO_ERROR; + + // the expected status code here is U_STRING_NOT_TERMINATED_WARNING +- ucnv_fromUChars(_utf, (char*) buffer, need, src.data(), src.size(), &status); ++ ucnv_fromUChars(_utf, (char*) buffer, need, reinterpret_cast<const UChar*>(src.data()), src.size(), &status); + if (status != U_STRING_NOT_TERMINATED_WARNING) + { + delete[] buffer; +--- a/c++/io/PrintStream.cxx ++++ b/c++/io/PrintStream.cxx +@@ -191,7 +191,7 @@ void PrintStream::print(jchar ch) throw () + UErrorCode status = U_ZERO_ERROR; + + // do conversion of one character +- size_t used = ucnv_fromUChars(_loc, buffer, 8, &ch, 1, &status); ++ size_t used = ucnv_fromUChars(_loc, buffer, 8, reinterpret_cast<UChar*>(&ch), 1, &status); + if (U_FAILURE(status)) + throw IOException("failure in ucnv_fromUChars"); + +@@ -268,14 +268,14 @@ void PrintStream::print(jlong x) throw () + + void PrintStream::print(const array<jchar>& chars) throw () + { +- print(chars.data(), chars.size()); ++ print(reinterpret_cast<const UChar*>(chars.data()), chars.size()); + } + + void PrintStream::print(const String& str) throw () + { + const array<jchar>& tmp = str.toCharArray(); + +- print(tmp.data(), tmp.size()); ++ print(reinterpret_cast<const UChar*>(tmp.data()), tmp.size()); + } + + void PrintStream::println() throw () +--- a/c++/lang/String.cxx ++++ b/c++/lang/String.cxx +@@ -33,6 +33,8 @@ using namespace beecrypt::lang; + #include <unicode/ustdio.h> + #include <unicode/ustring.h> + ++static_assert(sizeof(jchar) == sizeof(UChar), "jchar and UChar sizes mismatch"); ++ + String::String(array<jchar>& swapWith) + { + assert(swapWith.size() <= Integer::MAX_VALUE); +@@ -56,7 +58,7 @@ String::String() + + String::String(char c) : _value(1) + { +- u_charsToUChars(&c, _value.data(), 1); ++ u_charsToUChars(&c, reinterpret_cast<UChar*>(_value.data()), 1); + } + + String::String(jchar c) : _value(&c, 1) +@@ -67,7 +69,7 @@ String::String(const char* value) : _value(::strlen(value)) + { + assert(_value.size() <= Integer::MAX_VALUE); + +- u_charsToUChars(value, _value.data(), _value.size()); ++ u_charsToUChars(value, reinterpret_cast<UChar*>(_value.data()), _value.size()); + } + + String::String(const jchar* value, int offset, int length) : _value(value+offset, length) +@@ -449,7 +451,7 @@ std::ostream& beecrypt::lang::operator<<(std::ostream& stream, const String& str + if (U_FAILURE(status)) + throw RuntimeException("ucnv_open failed"); + +- int need = ucnv_fromUChars(loc, 0, 0, src.data(), src.size(), &status); ++ int need = ucnv_fromUChars(loc, 0, 0, reinterpret_cast<const UChar*>(src.data()), src.size(), &status); + if (U_FAILURE(status)) + if (status != U_BUFFER_OVERFLOW_ERROR) + throw RuntimeException("ucnv_fromUChars failed"); +@@ -458,7 +460,7 @@ std::ostream& beecrypt::lang::operator<<(std::ostream& stream, const String& str + + status = U_ZERO_ERROR; + +- ucnv_fromUChars(loc, out, need+1, src.data(), src.size(), &status); ++ ucnv_fromUChars(loc, out, need+1, reinterpret_cast<const UChar*>(src.data()), src.size(), &status); + if (U_FAILURE(status)) + throw RuntimeException("ucnv_fromUChars failed"); + +--- a/c++/lang/StringBuffer.cxx ++++ b/c++/lang/StringBuffer.cxx +@@ -35,7 +35,7 @@ StringBuffer::StringBuffer() : _buffer(16) + + StringBuffer::StringBuffer(const char* s) : _buffer(16 + strlen(s)) + { +- u_charsToUChars(s, _buffer.data(), _used = strlen(s)); ++ u_charsToUChars(s, reinterpret_cast<UChar*>(_buffer.data()), _used = strlen(s)); + } + + StringBuffer::StringBuffer(const String& s) : _buffer(16 + s._value.size()) +@@ -53,7 +53,7 @@ StringBuffer& StringBuffer::append(char c) + synchronized (this) + { + core_ensureCapacity(_used+1); +- u_charsToUChars(&c, _buffer.data() + _used++, 1); ++ u_charsToUChars(&c, reinterpret_cast<UChar*>(_buffer.data() + _used++), 1); + } + return *this; + } +@@ -88,7 +88,7 @@ StringBuffer& StringBuffer::append(const char* s) + jint need = strlen(s); + + core_ensureCapacity(_used + need); +- u_charsToUChars(s, _buffer.data() + _used, need); ++ u_charsToUChars(s, reinterpret_cast<UChar*>(_buffer.data() + _used), need); + + _used += need; + } +--- a/c++/lang/StringBuilder.cxx ++++ b/c++/lang/StringBuilder.cxx +@@ -38,7 +38,7 @@ StringBuilder::StringBuilder() : _buffer(16) + + StringBuilder::StringBuilder(const char* s) : _buffer(16 + strlen(s)) + { +- u_charsToUChars(s, _buffer.data(), _used = strlen(s)); ++ u_charsToUChars(s, reinterpret_cast<UChar*>(_buffer.data()), _used = strlen(s)); + } + + StringBuilder::StringBuilder(const String& s) : _buffer(16 + s._value.size()) +@@ -55,7 +55,7 @@ StringBuilder& StringBuilder::append(char c) + { + ensureCapacity(_used+1); + +- u_charsToUChars(&c, _buffer.data() + _used++, 1); ++ u_charsToUChars(&c, reinterpret_cast<UChar*>(_buffer.data() + _used++), 1); + + return *this; + } +@@ -97,7 +97,7 @@ StringBuilder& StringBuilder::append(const char* s) + + ensureCapacity(_used + need); + +- u_charsToUChars(s, _buffer.data() + _used, need); ++ u_charsToUChars(s, reinterpret_cast<UChar*>(_buffer.data() + _used), need); + + _used += need; + +--- a/c++/security/Provider.cxx ++++ b/c++/security/Provider.cxx +@@ -90,7 +90,7 @@ Object* Provider::setProperty(const String& key, const String& value) + + UErrorCode status = U_ZERO_ERROR; + +- ucnv_fromUChars(_conv, symname, 1024, src.data(), src.size(), &status); ++ ucnv_fromUChars(_conv, symname, 1024, reinterpret_cast<const UChar*>(src.data()), src.size(), &status); + + if (status != U_ZERO_ERROR) + throw RuntimeException("error in ucnv_fromUChars"); +--- a/c++/security/Security.cxx ++++ b/c++/security/Security.cxx +@@ -104,7 +104,7 @@ void Security::initialize() + + const array<jchar>& src = value->toCharArray(); + +- int need = ucnv_fromUChars(_loc, 0, 0, src.data(), src.size(), &status); ++ int need = ucnv_fromUChars(_loc, 0, 0, reinterpret_cast<const UChar*>(src.data()), src.size(), &status); + if (U_FAILURE(status)) + if (status != U_BUFFER_OVERFLOW_ERROR) + throw RuntimeException("ucnv_fromUChars failed"); +@@ -112,7 +112,7 @@ void Security::initialize() + char* shared_library = new char[need+1]; + + status = U_ZERO_ERROR; +- ucnv_fromUChars(_loc, shared_library, need+1, src.data(), src.size(), &status); ++ ucnv_fromUChars(_loc, shared_library, need+1, reinterpret_cast<const UChar*>(src.data()), src.size(), &status); + if (U_FAILURE(status)) + throw RuntimeException("ucnv_fromUChars failed"); + |