QStorageInfo manual test: port away from Q_FOREACH

In main.cpp, the loop is over a local variable which would be const
were it not for the multi-step initialization that I didn't want to
change. The loop body clearly doesn't modify the container, so port to
ranged for loop with std::as_const().

In printvolumes.cpp, the loop _does_ invoke unknown code (through the
function pointer passed as the second argument), but, as could be
expected, the two users of the function don't pass functions that know
about `volumes`:

- in the tst_QStorageInfo auto-test, an rvalue `volumes` is passed,
  so we don't need to analyze the qInfoPrinter function passed there,
  as it cannot possibly reference the temporary

- and in main.cpp of the manual test, we just pass printf (which is
  technically UB (taking the address of a standard library function),
  but I don't care right now).

Task-number: QTBUG-115839
Change-Id: Ibcd10a0e0b3229d8f2a1d98545d8fa6d473a0f75
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
(cherry picked from commit bb11f7a9fa576b679fc64b09abadebf90dfbe9a1)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2023-08-08 10:17:15 +02:00 committed by Qt Cherry-pick Bot
parent 0be8f763d5
commit 88dd567930
2 changed files with 2 additions and 2 deletions

View File

@ -15,7 +15,7 @@ int main(int argc, char *argv[])
QStringList args = a.arguments(); QStringList args = a.arguments();
args.takeFirst(); // skip application name args.takeFirst(); // skip application name
foreach (const QString &path, args) { for (const QString &path : std::as_const(args)) {
QStorageInfo info(path); QStorageInfo info(path);
if (!info.isValid()) { if (!info.isValid()) {
// no error string... // no error string...

View File

@ -13,7 +13,7 @@ void printVolumes(const QList<QStorageInfo> &volumes, int (*printer)(const char
// /dev/disk1s2 (hfs) RW 488050672 419909696 4096 Macintosh HD2 /Volumes/Macintosh HD2 // /dev/disk1s2 (hfs) RW 488050672 419909696 4096 Macintosh HD2 /Volumes/Macintosh HD2
printer("Filesystem (Type) Size Available BSize Label Mounted on\n"); printer("Filesystem (Type) Size Available BSize Label Mounted on\n");
foreach (const QStorageInfo &info, volumes) { for (const QStorageInfo &info : volumes) {
QByteArray fsAndType = info.device(); QByteArray fsAndType = info.device();
if (info.fileSystemType() != fsAndType) if (info.fileSystemType() != fsAndType)
fsAndType += " (" + info.fileSystemType() + ')'; fsAndType += " (" + info.fileSystemType() + ')';