@@ -234,14 +234,14 @@ class QMYSQLResultPrivate: public QSqlResultPrivate
234
234
struct QMyField
235
235
{
236
236
QMyField ()
237
- : outField(0 ), nullIndicator( false ), bufLength(0ul ),
238
- myField ( 0 ), type(QVariant::Invalid)
237
+ : outField(0 ), myField(Q_NULLPTR ), bufLength(0ul ),
238
+ type (QVariant::Invalid), nullIndicator( false )
239
239
{}
240
240
char *outField;
241
- my_bool nullIndicator ;
241
+ const MYSQL_FIELD *myField ;
242
242
ulong bufLength;
243
- MYSQL_FIELD *myField;
244
243
QVariant::Type type;
244
+ my_bool nullIndicator;
245
245
};
246
246
247
247
QVector<QMyField> fields;
@@ -378,12 +378,10 @@ static bool qIsInteger(int t)
378
378
379
379
void QMYSQLResultPrivate::bindBlobs ()
380
380
{
381
- int i;
382
- MYSQL_FIELD *fieldInfo;
383
381
MYSQL_BIND *bind;
384
382
385
- for ( i = 0 ; i < fields.count (); ++i) {
386
- fieldInfo = fields.at (i).myField ;
383
+ for ( int i = 0 ; i < fields.count (); ++i) {
384
+ const MYSQL_FIELD * fieldInfo = fields.at (i).myField ;
387
385
if (qIsBlob (inBinds[i].buffer_type ) && meta && fieldInfo) {
388
386
bind = &inBinds[i];
389
387
bind->buffer_length = fieldInfo->max_length ;
@@ -396,8 +394,6 @@ void QMYSQLResultPrivate::bindBlobs()
396
394
397
395
bool QMYSQLResultPrivate::bindInValues ()
398
396
{
399
- MYSQL_BIND *bind;
400
- char *field;
401
397
int i = 0 ;
402
398
403
399
if (!meta)
@@ -410,35 +406,34 @@ bool QMYSQLResultPrivate::bindInValues()
410
406
inBinds = new MYSQL_BIND[fields.size ()];
411
407
memset (inBinds, 0 , fields.size () * sizeof (MYSQL_BIND));
412
408
413
- MYSQL_FIELD *fieldInfo;
409
+ const MYSQL_FIELD *fieldInfo;
414
410
415
411
while ((fieldInfo = mysql_fetch_field (meta))) {
412
+ MYSQL_BIND *bind = &inBinds[i];
413
+
416
414
QMyField &f = fields[i];
417
415
f.myField = fieldInfo;
418
-
416
+ bind->buffer_length = f.bufLength = fieldInfo->length + 1 ;
417
+ bind->buffer_type = fieldInfo->type ;
419
418
f.type = qDecodeMYSQLType (fieldInfo->type , fieldInfo->flags );
420
419
if (qIsBlob (fieldInfo->type )) {
421
420
// the size of a blob-field is available as soon as we call
422
421
// mysql_stmt_store_result()
423
422
// after mysql_stmt_exec() in QMYSQLResult::exec()
424
- fieldInfo-> length = 0 ;
423
+ bind-> buffer_length = f. bufLength = 0 ;
425
424
hasBlobs = true ;
426
425
} else if (qIsInteger (f.type )) {
427
- fieldInfo-> length = 8 ;
426
+ bind-> buffer_length = f. bufLength = 8 ;
428
427
} else {
429
- fieldInfo-> type = MYSQL_TYPE_STRING;
428
+ bind-> buffer_type = MYSQL_TYPE_STRING;
430
429
}
431
- bind = &inBinds[i];
432
- field = new char [fieldInfo->length + 1 ];
433
- memset (field, 0 , fieldInfo->length + 1 );
434
430
435
- bind->buffer_type = fieldInfo->type ;
436
- bind->buffer = field;
437
- bind->buffer_length = f.bufLength = fieldInfo->length + 1 ;
438
431
bind->is_null = &f.nullIndicator ;
439
432
bind->length = &f.bufLength ;
440
433
bind->is_unsigned = fieldInfo->flags & UNSIGNED_FLAG ? 1 : 0 ;
441
- f.outField =field;
434
+
435
+ char *field = new char [bind->buffer_length + 1 ]{};
436
+ bind->buffer = f.outField = field;
442
437
443
438
++i;
444
439
}
0 commit comments