cleanup: silence std::move()-related Coverity warnings

Unfortunately Coverity doesn't understand that most Qt data
structures are copy-on-write. It's a mis-feature of Qt, but
it is the way it is. Thus, passing by value is not an issue.

Out of ca. 25 warnings only two were legit. Let's silence
the others by either std::move()ing or passing by reference,
as would be idiomatic C++, which Qt is not.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2024-01-15 21:22:20 +01:00 committed by Dirk Hohndel
parent ac0d44bccf
commit 8a3a0edb83
22 changed files with 39 additions and 38 deletions

View file

@ -234,7 +234,7 @@ DivesAndSitesToRemove DiveListBase::addDives(DivesAndTripsToAdd &toAdd)
if (!change.newShown.empty() || !change.newHidden.empty()) if (!change.newShown.empty() || !change.newHidden.empty())
emit diveListNotifier.numShownChanged(); emit diveListNotifier.numShownChanged();
return { res, sites }; return { std::move(res), std::move(sites) };
} }
// This helper function renumbers dives according to an array of id/number pairs. // This helper function renumbers dives according to an array of id/number pairs.

View file

@ -83,7 +83,7 @@ static std::vector<PictureListForAddition> removePictures(std::vector<PictureLis
if (!toAdd.pics.empty()) if (!toAdd.pics.empty())
res.push_back(toAdd); res.push_back(toAdd);
invalidate_dive_cache(list.d); invalidate_dive_cache(list.d);
emit diveListNotifier.picturesRemoved(list.d, filenames); emit diveListNotifier.picturesRemoved(list.d, std::move(filenames));
} }
picturesToRemove.clear(); picturesToRemove.clear();
return res; return res;

View file

@ -65,7 +65,7 @@ static QString writeGasDetails(gas g)
}).join(QLatin1Char(',')); }).join(QLatin1Char(','));
} }
bool ConfigureDiveComputer::saveXMLBackup(QString fileName, DeviceDetails *details, device_data_t *data) bool ConfigureDiveComputer::saveXMLBackup(const QString &fileName, DeviceDetails *details, device_data_t *data)
{ {
QString xml = ""; QString xml = "";
QString vendor = data->vendor; QString vendor = data->vendor;
@ -192,7 +192,7 @@ bool ConfigureDiveComputer::saveXMLBackup(QString fileName, DeviceDetails *detai
return true; return true;
} }
bool ConfigureDiveComputer::restoreXMLBackup(QString fileName, DeviceDetails *details) bool ConfigureDiveComputer::restoreXMLBackup(const QString &fileName, DeviceDetails *details)
{ {
QFile file(fileName); QFile file(fileName);
if (!file.open(QIODevice::ReadOnly)) { if (!file.open(QIODevice::ReadOnly)) {
@ -491,7 +491,7 @@ bool ConfigureDiveComputer::restoreXMLBackup(QString fileName, DeviceDetails *de
return true; return true;
} }
void ConfigureDiveComputer::startFirmwareUpdate(QString fileName, device_data_t *data, bool forceUpdate) void ConfigureDiveComputer::startFirmwareUpdate(const QString &fileName, device_data_t *data, bool forceUpdate)
{ {
setState(FWUPDATE); setState(FWUPDATE);
if (firmwareThread) if (firmwareThread)

View file

@ -34,9 +34,9 @@ public:
states currentState; states currentState;
void saveDeviceDetails(DeviceDetails *details, device_data_t *data); void saveDeviceDetails(DeviceDetails *details, device_data_t *data);
void fetchDeviceDetails(); void fetchDeviceDetails();
bool saveXMLBackup(QString fileName, DeviceDetails *details, device_data_t *data); bool saveXMLBackup(const QString &fileName, DeviceDetails *details, device_data_t *data);
bool restoreXMLBackup(QString fileName, DeviceDetails *details); bool restoreXMLBackup(const QString &fileName, DeviceDetails *details);
void startFirmwareUpdate(QString fileName, device_data_t *data, bool forceUpdate); void startFirmwareUpdate(const QString &fileName, device_data_t *data, bool forceUpdate);
void resetSettings(device_data_t *data); void resetSettings(device_data_t *data);
QString dc_open(device_data_t *data); QString dc_open(device_data_t *data);

View file

@ -145,10 +145,10 @@ bool DiveFilter::showDive(const struct dive *d) const
void DiveFilter::startFilterDiveSites(QVector<dive_site *> ds) void DiveFilter::startFilterDiveSites(QVector<dive_site *> ds)
{ {
if (++diveSiteRefCount > 1) { if (++diveSiteRefCount > 1) {
setFilterDiveSite(ds); setFilterDiveSite(std::move(ds));
} else { } else {
std::sort(ds.begin(), ds.end()); std::sort(ds.begin(), ds.end());
dive_sites = ds; dive_sites = std::move(ds);
// When switching into dive site mode, reload the dive sites. // When switching into dive site mode, reload the dive sites.
// TODO: why here? why not catch the filterReset signal in the map widget // TODO: why here? why not catch the filterReset signal in the map widget
#ifdef MAP_SUPPORT #ifdef MAP_SUPPORT
@ -176,7 +176,7 @@ void DiveFilter::setFilterDiveSite(QVector<dive_site *> ds)
std::sort(ds.begin(), ds.end()); std::sort(ds.begin(), ds.end());
if (ds == dive_sites) if (ds == dive_sites)
return; return;
dive_sites = ds; dive_sites = std::move(ds);
emit diveListNotifier.filterReset(); emit diveListNotifier.filterReset();
#ifdef MAP_SUPPORT #ifdef MAP_SUPPORT

View file

@ -33,7 +33,7 @@ enum length_modifier_t {
}; };
// Helper function to insert '+' or ' ' after last space // Helper function to insert '+' or ' ' after last space
static QString insert_sign(QString s, char sign) static QString insert_sign(const QString &s, char sign)
{ {
// For space we can take a shortcut: insert in front // For space we can take a shortcut: insert in front
if (sign == ' ') if (sign == ' ')

View file

@ -186,7 +186,7 @@ Thumbnailer::Thumbnail Thumbnailer::getPictureThumbnailFromStream(QDataStream &s
{ {
QImage res; QImage res;
stream >> res; stream >> res;
return { res, MEDIATYPE_PICTURE, zero_duration }; return { std::move(res), MEDIATYPE_PICTURE, zero_duration };
} }
void Thumbnailer::markVideoThumbnail(QImage &img) void Thumbnailer::markVideoThumbnail(QImage &img)
@ -362,7 +362,7 @@ void Thumbnailer::frameExtracted(QString filename, QImage thumbnail, duration_t
addVideoThumbnailToCache(filename, duration, thumbnail, offset); addVideoThumbnailToCache(filename, duration, thumbnail, offset);
QMutexLocker l(&lock); QMutexLocker l(&lock);
workingOn.remove(filename); workingOn.remove(filename);
emit thumbnailChanged(filename, thumbnail, duration); emit thumbnailChanged(filename, std::move(thumbnail), duration);
} }
} }

View file

@ -267,7 +267,7 @@ ConfigureDiveComputerDialog::ConfigureDiveComputerDialog(QWidget *parent) : QDia
settings.endGroup(); settings.endGroup();
} }
OstcFirmwareCheck::OstcFirmwareCheck(QString product) : parent(0) OstcFirmwareCheck::OstcFirmwareCheck(const QString &product) : parent(0)
{ {
QUrl url; QUrl url;
memset(&devData, 1, sizeof(devData)); memset(&devData, 1, sizeof(devData));

View file

@ -123,7 +123,7 @@ private:
class OstcFirmwareCheck : public QObject { class OstcFirmwareCheck : public QObject {
Q_OBJECT Q_OBJECT
public: public:
explicit OstcFirmwareCheck(QString product); explicit OstcFirmwareCheck(const QString &product);
void checkLatest(QWidget *parent, device_data_t *data); void checkLatest(QWidget *parent, device_data_t *data);
public public
slots: slots:

View file

@ -823,7 +823,7 @@ void DiveListView::loadImages()
matchImagesToDives(fileNames); matchImagesToDives(fileNames);
} }
void DiveListView::matchImagesToDives(QStringList fileNames) void DiveListView::matchImagesToDives(const QStringList &fileNames)
{ {
ShiftImageTimesDialog shiftDialog(this, fileNames); ShiftImageTimesDialog shiftDialog(this, fileNames);
shiftDialog.setOffset(lastImageTimeOffset()); shiftDialog.setOffset(lastImageTimeOffset());
@ -843,9 +843,9 @@ void DiveListView::matchImagesToDives(QStringList fileNames)
auto it = std::find_if(pics.begin(), pics.end(), [d](const Command::PictureListForAddition &l) { return l.d == d; }); auto it = std::find_if(pics.begin(), pics.end(), [d](const Command::PictureListForAddition &l) { return l.d == d; });
if (it == pics.end()) if (it == pics.end())
pics.push_back(Command::PictureListForAddition { d, { pObj } }); pics.push_back(Command::PictureListForAddition { d, { std::move(pObj) } });
else else
it->pics.push_back(pObj); it->pics.push_back(std::move(pObj));
} }
if (pics.empty()) if (pics.empty())
@ -862,7 +862,7 @@ void DiveListView::loadWebImages()
loadImagesFromURLs(urlDialog.url()); loadImagesFromURLs(urlDialog.url());
} }
void DiveListView::loadImagesFromURLs(QString urls) void DiveListView::loadImagesFromURLs(const QString &urls)
{ {
QStringList validUrls; QStringList validUrls;
QStringList urlList = urls.split('\n'); QStringList urlList = urls.split('\n');

View file

@ -76,8 +76,8 @@ private:
void updateLastImageTimeOffset(int offset); void updateLastImageTimeOffset(int offset);
int lastImageTimeOffset(); int lastImageTimeOffset();
void addToTrip(int delta); void addToTrip(int delta);
void matchImagesToDives(QStringList fileNames); void matchImagesToDives(const QStringList &fileNames);
void loadImagesFromURLs(QString urls); void loadImagesFromURLs(const QString &urls);
bool eventFilter(QObject *, QEvent *) override; bool eventFilter(QObject *, QEvent *) override;
void mouseDoubleClickEvent(QMouseEvent *event) override; void mouseDoubleClickEvent(QMouseEvent *event) override;
void contextMenuEvent(QContextMenuEvent *event) override; void contextMenuEvent(QContextMenuEvent *event) override;

View file

@ -361,7 +361,7 @@ DiveLogImportDialog::DiveLogImportDialog(QStringList fn, QWidget *parent) : QDia
ui(new Ui::DiveLogImportDialog) ui(new Ui::DiveLogImportDialog)
{ {
ui->setupUi(this); ui->setupUi(this);
fileNames = fn; fileNames = std::move(fn);
column = 0; column = 0;
delta = "0"; delta = "0";
hw = ""; hw = "";

View file

@ -94,7 +94,8 @@ struct Dir {
double progressFrom, progressTo; double progressFrom, progressTo;
}; };
QVector<FindMovedImagesDialog::Match> FindMovedImagesDialog::learnImages(const QString &rootdir, int maxRecursions, QVector<QString> imagePathsIn) QVector<FindMovedImagesDialog::Match> FindMovedImagesDialog::learnImages(const QString &rootdir, int maxRecursions,
QVector<QString> imagePathsIn)
{ {
QMap<QString, ImageMatch> matches; QMap<QString, ImageMatch> matches;
@ -193,7 +194,7 @@ void FindMovedImagesDialog::on_scanButton_clicked()
QFuture<QVector<Match>> future = QtConcurrent::run( QFuture<QVector<Match>> future = QtConcurrent::run(
// Note that we capture everything but "this" by copy to avoid dangling references. // Note that we capture everything but "this" by copy to avoid dangling references.
[this, dirName, imagePaths]() [this, dirName, imagePaths]()
{ return learnImages(dirName, 20, imagePaths);} { return learnImages(dirName, 20, std::move(imagePaths)); }
); );
watcher.setFuture(future); watcher.setFuture(future);
} }

View file

@ -1273,7 +1273,7 @@ void MainWindow::setTitle()
setWindowTitle("Subsurface: " + displayedFilename(existing_filename) + unsaved + shown); setWindowTitle("Subsurface: " + displayedFilename(existing_filename) + unsaved + shown);
} }
void MainWindow::importFiles(const QStringList fileNames) void MainWindow::importFiles(const QStringList &fileNames)
{ {
if (fileNames.isEmpty()) if (fileNames.isEmpty())
return; return;
@ -1289,7 +1289,7 @@ void MainWindow::importFiles(const QStringList fileNames)
Command::importDives(&log, IMPORT_MERGE_ALL_TRIPS, source); Command::importDives(&log, IMPORT_MERGE_ALL_TRIPS, source);
} }
void MainWindow::loadFiles(const QStringList fileNames) void MainWindow::loadFiles(const QStringList &fileNames)
{ {
if (fileNames.isEmpty()) { if (fileNames.isEmpty()) {
refreshDisplay(); refreshDisplay();
@ -1359,7 +1359,7 @@ void MainWindow::on_actionImportDiveLog_triggered()
} }
if (csvFiles.size()) { if (csvFiles.size()) {
DiveLogImportDialog diveLogImport(csvFiles, this); DiveLogImportDialog diveLogImport(std::move(csvFiles), this);
diveLogImport.exec(); diveLogImport.exec();
} }
} }

View file

@ -67,8 +67,8 @@ public:
Count Count
}; };
void loadFiles(const QStringList files); void loadFiles(const QStringList &files);
void importFiles(const QStringList importFiles); void importFiles(const QStringList &importFiles);
void setToolButtonsEnabled(bool enabled); void setToolButtonsEnabled(bool enabled);
void setApplicationState(ApplicationState state); void setApplicationState(ApplicationState state);
void enterPreviousState(); void enterPreviousState();

View file

@ -515,7 +515,7 @@ QString TextHyperlinkEventFilter::tryToFormulateUrl(QTextCursor *cursor)
maybeUrlStr = left + right; maybeUrlStr = left + right;
} }
return stringMeetsOurUrlRequirements(maybeUrlStr) ? maybeUrlStr : QString(); return stringMeetsOurUrlRequirements(maybeUrlStr) ? std::move(maybeUrlStr) : QString();
} }
QString TextHyperlinkEventFilter::fromCursorTilWhitespace(QTextCursor *cursor, bool searchBackwards) QString TextHyperlinkEventFilter::fromCursorTilWhitespace(QTextCursor *cursor, bool searchBackwards)

View file

@ -59,7 +59,7 @@ void set_bundled_templates_as_read_only()
QFile::setPermissions(pathUser + QDir::separator() + f, QFileDevice::ReadOwner | QFileDevice::ReadUser); QFile::setPermissions(pathUser + QDir::separator() + f, QFileDevice::ReadOwner | QFileDevice::ReadUser);
} }
void copy_bundled_templates(QString src, QString dst, QStringList *templateBackupList) void copy_bundled_templates(QString src, const QString &dst, QStringList *templateBackupList)
{ {
QDir dir(src); QDir dir(src);
if (!dir.exists()) if (!dir.exists())

View file

@ -12,7 +12,7 @@ class QTextStream;
void find_all_templates(); void find_all_templates();
void set_bundled_templates_as_read_only(); void set_bundled_templates_as_read_only();
void copy_bundled_templates(QString src, QString dst, QStringList *templateBackupList); void copy_bundled_templates(QString src, const QString &dst, QStringList *templateBackupList);
enum token_t {LITERAL, FORSTART, FORSTOP, BLOCKSTART, BLOCKSTOP, IFSTART, IFSTOP, PARSERERROR}; enum token_t {LITERAL, FORSTART, FORSTOP, BLOCKSTART, BLOCKSTOP, IFSTART, IFSTOP, PARSERERROR};

View file

@ -179,7 +179,7 @@ static QString displaySac(const struct dive *d, bool units)
if (!d->sac) if (!d->sac)
return QString(); return QString();
QString s = get_volume_string(d->sac, units); QString s = get_volume_string(d->sac, units);
return units ? s + gettextFromC::tr("/min") : s; return units ? s + gettextFromC::tr("/min") : std::move(s);
} }
static QString displayWeight(const struct dive *d, bool units) static QString displayWeight(const struct dive *d, bool units)

View file

@ -35,8 +35,8 @@ void ChartListModel::initIcon(ChartSubType type, const char *name, int iconSize)
QPixmap iconWarning = icon.copy(); QPixmap iconWarning = icon.copy();
QPainter painter(&iconWarning); QPainter painter(&iconWarning);
painter.drawPixmap(0, 0, warningPixmap); painter.drawPixmap(0, 0, warningPixmap);
subTypeIcons[(size_t)type].normal = icon; subTypeIcons[(size_t)type].normal = std::move(icon);
subTypeIcons[(size_t)type].warning = iconWarning; subTypeIcons[(size_t)type].warning = std::move(iconWarning);
} }
const QPixmap &ChartListModel::getIcon(ChartSubType type, bool warning) const const QPixmap &ChartListModel::getIcon(ChartSubType type, bool warning) const

View file

@ -271,7 +271,7 @@ QString StatsBinner::formatWithUnit(const StatsBin &bin) const
{ {
QString unit = unitSymbol(); QString unit = unitSymbol();
QString name = format(bin); QString name = format(bin);
return unit.isEmpty() ? name : QStringLiteral("%1 %2").arg(name, unit); return unit.isEmpty() ? std::move(name) : QStringLiteral("%1 %2").arg(name, unit);
} }
QString StatsBinner::formatLowerBound(const StatsBin &bin) const QString StatsBinner::formatLowerBound(const StatsBin &bin) const

View file

@ -710,7 +710,7 @@ static std::vector<QString> makePercentageLabels(int count, int total, bool isHo
if (isHorizontal) if (isHorizontal)
return { QString("%1 (%2)").arg(countString, percentageString) }; return { QString("%1 (%2)").arg(countString, percentageString) };
else else
return { countString, percentageString }; return { std::move(countString), std::move(percentageString) };
} }
// From a list of dive bins, make (dives, label) pairs, where the label // From a list of dive bins, make (dives, label) pairs, where the label