Fix size miscalculation in QByteArray::toBase64
The size calculation in QByteArray::toBase64 overcalculates the size required for the output by up to 3 Bytes. This is fixed, which also implies that truncate() at the end is needed only if OmitTrailingEquals is used. Task-number: QTBUG-32436 Change-Id: I92a893047e7aca027c4aa0a6655bcca514585ff5 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
fc3402ca82
commit
c6aa76122e
@ -3571,7 +3571,7 @@ QByteArray QByteArray::toBase64(Base64Options options) const
|
||||
const char padchar = '=';
|
||||
int padlen = 0;
|
||||
|
||||
QByteArray tmp((d->size * 4) / 3 + 3, Qt::Uninitialized);
|
||||
QByteArray tmp((d->size + 2) / 3 * 4, Qt::Uninitialized);
|
||||
|
||||
int i = 0;
|
||||
char *out = tmp.data();
|
||||
@ -3609,8 +3609,9 @@ QByteArray QByteArray::toBase64(Base64Options options) const
|
||||
*out++ = alphabet[m];
|
||||
}
|
||||
}
|
||||
|
||||
tmp.truncate(out - tmp.data());
|
||||
Q_ASSERT((options & OmitTrailingEquals) || (out == tmp.size() + tmp.data()));
|
||||
if (options & OmitTrailingEquals)
|
||||
tmp.truncate(out - tmp.data());
|
||||
return tmp;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user