@@ -234,14 +234,14 @@ class QMYSQLResultPrivate: public QSqlResultPrivate
234234 struct QMyField
235235 {
236236 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 )
239239 {}
240240 char *outField;
241- my_bool nullIndicator ;
241+ const MYSQL_FIELD *myField ;
242242 ulong bufLength;
243- MYSQL_FIELD *myField;
244243 QVariant::Type type;
244+ my_bool nullIndicator;
245245 };
246246
247247 QVector<QMyField> fields;
@@ -378,12 +378,10 @@ static bool qIsInteger(int t)
378378
379379void QMYSQLResultPrivate::bindBlobs ()
380380{
381- int i;
382- MYSQL_FIELD *fieldInfo;
383381 MYSQL_BIND *bind;
384382
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 ;
387385 if (qIsBlob (inBinds[i].buffer_type ) && meta && fieldInfo) {
388386 bind = &inBinds[i];
389387 bind->buffer_length = fieldInfo->max_length ;
@@ -396,8 +394,6 @@ void QMYSQLResultPrivate::bindBlobs()
396394
397395bool QMYSQLResultPrivate::bindInValues ()
398396{
399- MYSQL_BIND *bind;
400- char *field;
401397 int i = 0 ;
402398
403399 if (!meta)
@@ -410,35 +406,34 @@ bool QMYSQLResultPrivate::bindInValues()
410406 inBinds = new MYSQL_BIND[fields.size ()];
411407 memset (inBinds, 0 , fields.size () * sizeof (MYSQL_BIND));
412408
413- MYSQL_FIELD *fieldInfo;
409+ const MYSQL_FIELD *fieldInfo;
414410
415411 while ((fieldInfo = mysql_fetch_field (meta))) {
412+ MYSQL_BIND *bind = &inBinds[i];
413+
416414 QMyField &f = fields[i];
417415 f.myField = fieldInfo;
418-
416+ bind->buffer_length = f.bufLength = fieldInfo->length + 1 ;
417+ bind->buffer_type = fieldInfo->type ;
419418 f.type = qDecodeMYSQLType (fieldInfo->type , fieldInfo->flags );
420419 if (qIsBlob (fieldInfo->type )) {
421420 // the size of a blob-field is available as soon as we call
422421 // mysql_stmt_store_result()
423422 // after mysql_stmt_exec() in QMYSQLResult::exec()
424- fieldInfo-> length = 0 ;
423+ bind-> buffer_length = f. bufLength = 0 ;
425424 hasBlobs = true ;
426425 } else if (qIsInteger (f.type )) {
427- fieldInfo-> length = 8 ;
426+ bind-> buffer_length = f. bufLength = 8 ;
428427 } else {
429- fieldInfo-> type = MYSQL_TYPE_STRING;
428+ bind-> buffer_type = MYSQL_TYPE_STRING;
430429 }
431- bind = &inBinds[i];
432- field = new char [fieldInfo->length + 1 ];
433- memset (field, 0 , fieldInfo->length + 1 );
434430
435- bind->buffer_type = fieldInfo->type ;
436- bind->buffer = field;
437- bind->buffer_length = f.bufLength = fieldInfo->length + 1 ;
438431 bind->is_null = &f.nullIndicator ;
439432 bind->length = &f.bufLength ;
440433 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;
442437
443438 ++i;
444439 }
0 commit comments