From 573cd57de8ac36486348d87443095345dd55ca9f Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sat, 14 Aug 2021 14:09:35 +0000 Subject: [PATCH] extra/qt5-base to 5.15.2+kde+r215-2 --- extra/qt5-base/PKGBUILD | 9 ++-- extra/qt5-base/qtbug-95639.patch | 77 ++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 extra/qt5-base/qtbug-95639.patch diff --git a/extra/qt5-base/PKGBUILD b/extra/qt5-base/PKGBUILD index 7ff41f25d..698735d1d 100644 --- a/extra/qt5-base/PKGBUILD +++ b/extra/qt5-base/PKGBUILD @@ -9,7 +9,7 @@ pkgbase=qt5-base pkgname=(qt5-base qt5-xcb-private-headers) pkgver=5.15.2+kde+r215 -pkgrel=1 +pkgrel=2 _commit=2583b4f9397d60c4dd8403ca18c9df5bdf1c5583 arch=('x86_64') url='https://www.qt.io' @@ -35,10 +35,12 @@ groups=('qt' 'qt5') _pkgfqn=qtbase source=(git+https://invent.kde.org/qt/qt/$_pkgfqn#commit=$_commit qt5-base-cflags.patch - qt5-base-nostrip.patch) + qt5-base-nostrip.patch + qtbug-95639.patch) sha256sums=('SKIP' 'cf707cd970650f8b60f8897692b36708ded9ba116723ec8fcd885576783fe85c' - '4b93f6a79039e676a56f9d6990a324a64a36f143916065973ded89adc621e094') + '4b93f6a79039e676a56f9d6990a324a64a36f143916065973ded89adc621e094' + '562e4ff501d52326658af751a596b948113271774cfa6692f1db0c7cf6609fa4') pkgver() { cd $_pkgfqn @@ -52,6 +54,7 @@ prepare() { patch -p1 < ../qt5-base-cflags.patch # Use system CFLAGS in qmake patch -p1 < ../qt5-base-nostrip.patch # Don't strip binaries with qmake + patch -p1 < ../qtbug-95639.patch # Fix issues with MariaDB 10.6 } build() { diff --git a/extra/qt5-base/qtbug-95639.patch b/extra/qt5-base/qtbug-95639.patch new file mode 100644 index 000000000..1235a9fd2 --- /dev/null +++ b/extra/qt5-base/qtbug-95639.patch @@ -0,0 +1,77 @@ +diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp +index a641935dc5..b1cf4548d1 100644 +--- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp ++++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp +@@ -209,7 +209,7 @@ public: + struct QMyField + { + char *outField = nullptr; +- MYSQL_FIELD *myField = nullptr; ++ const MYSQL_FIELD *myField = nullptr; + QMetaType::Type type = QMetaType::UnknownType; + my_bool nullIndicator = false; + ulong bufLength = 0ul; +@@ -346,14 +346,10 @@ static bool qIsInteger(int t) + + void QMYSQLResultPrivate::bindBlobs() + { +- int i; +- MYSQL_FIELD *fieldInfo; +- MYSQL_BIND *bind; +- +- for(i = 0; i < fields.count(); ++i) { +- fieldInfo = fields.at(i).myField; ++ for(int i = 0; i < fields.count(); ++i) { ++ const MYSQL_FIELD *fieldInfo = fields.at(i).myField; + if (qIsBlob(inBinds[i].buffer_type) && meta && fieldInfo) { +- bind = &inBinds[i]; ++ MYSQL_BIND *bind = &inBinds[i]; + bind->buffer_length = fieldInfo->max_length; + delete[] static_cast(bind->buffer); + bind->buffer = new char[fieldInfo->max_length]; +@@ -378,35 +374,32 @@ bool QMYSQLResultPrivate::bindInValues() + inBinds = new MYSQL_BIND[fields.size()]; + memset(inBinds, 0, fields.size() * sizeof(MYSQL_BIND)); + +- MYSQL_FIELD *fieldInfo; ++ const MYSQL_FIELD *fieldInfo; + + while((fieldInfo = mysql_fetch_field(meta))) { ++ MYSQL_BIND *bind = &inBinds[i]; ++ + QMyField &f = fields[i]; + f.myField = fieldInfo; +- ++ bind->buffer_length = f.bufLength = fieldInfo->length + 1; ++ bind->buffer_type = fieldInfo->type; + f.type = qDecodeMYSQLType(fieldInfo->type, fieldInfo->flags); + if (qIsBlob(fieldInfo->type)) { + // the size of a blob-field is available as soon as we call + // mysql_stmt_store_result() + // after mysql_stmt_exec() in QMYSQLResult::exec() +- fieldInfo->length = 0; ++ bind->buffer_length = f.bufLength = 0; + hasBlobs = true; + } else if (qIsInteger(f.type)) { +- fieldInfo->length = 8; ++ bind->buffer_length = f.bufLength = 8; + } else { +- fieldInfo->type = MYSQL_TYPE_STRING; ++ bind->buffer_type = MYSQL_TYPE_STRING; + } +- bind = &inBinds[i]; +- field = new char[fieldInfo->length + 1]; +- memset(field, 0, fieldInfo->length + 1); +- +- bind->buffer_type = fieldInfo->type; +- bind->buffer = field; +- bind->buffer_length = f.bufLength = fieldInfo->length + 1; + bind->is_null = &f.nullIndicator; + bind->length = &f.bufLength; + bind->is_unsigned = fieldInfo->flags & UNSIGNED_FLAG ? 1 : 0; +- f.outField=field; ++ char *field = new char[bind->buffer_length + 1]{}; ++ bind->buffer = f.outField = field; + + ++i; + }