mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2025-03-19 00:21:40 +00:00
77 lines
2.9 KiB
Diff
77 lines
2.9 KiB
Diff
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<char*>(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;
|
|
}
|