krazy says:

Check for foreach loop issues [foreach]...OOPS! 22 issues found!
src/projecttree/proxyclipjob.cpp: non-const ref iterator line# 55 (1)
src/projecttree/meltjob.cpp: non-const ref iterator line# 99,122,131,153 (4)
src/titlewidget.cpp: non-const ref iterator line# 515 (1)
src/initeffects.cpp: non-const ref iterator line# 546 (1)
src/clipitem.cpp: non-const ref iterator line# 1976,2058 (2)
src/renderwidget.cpp: non-const ref iterator line# 1429,1446 (2)
src/geometrywidget.cpp: non-const ref iterator line# 281 (1)
src/effectstack/effectstackview2.cpp: values or keys iteration line# 661 (1)
src/mainwindow.cpp: non-const ref iterator line# 592 (1)
src/keyframeedit.cpp: non-const ref iterator line# 466 (1)
src/parameterplotter.cpp: non-const ref iterator line# 251 (1)
src/stopmotion/stopmotion.cpp: non-const ref iterator line# 441 (1)
src/documentchecker.cpp: non-const ref iterator line# 179,196,859 (3)
src/cliptranscode.cpp: non-const ref iterator line# 143 (1)
testingArea/audioOffset.cpp: non-const ref iterator line# 55 (1)
When not using POD types (int, double, pointer, ...) you should use const & for 
your foreach variables. There are two reasons for this: 1) Prevents you from 
the mistake of writing foreach loops that modify the list, that is 'foreach(Foo 
f, list) f.a = f.b = f.c = 0;' compiles but does not modify the contents of 
list 2) Saves a copy constructor call for each of the list elements
---
 src/clipitem.cpp                 |    4 ++--
 src/documentchecker.cpp          |    6 +++---
 src/geometrywidget.cpp           |    2 +-
 src/keyframeedit.cpp             |    2 +-
 src/mainwindow.cpp               |    2 +-
 src/parameterplotter.cpp         |    2 +-
 src/projecttree/meltjob.cpp      |    8 ++++----
 src/projecttree/proxyclipjob.cpp |   12 ++++++------
 src/renderwidget.cpp             |    4 ++--
 src/stopmotion/stopmotion.cpp    |    2 +-
 src/titlewidget.cpp              |    2 +-
 testingArea/audioOffset.cpp      |    2 +-
 12 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/src/clipitem.cpp b/src/clipitem.cpp
index 281953a..fb41804 100644
--- a/src/clipitem.cpp
+++ b/src/clipitem.cpp
@@ -1973,7 +1973,7 @@ bool ClipItem::updateNormalKeyframes(QDomElement 
parameter, ItemInfo oldInfo)
 
     const QStringList data = parameter.attribute("keyframes").split(';', 
QString::SkipEmptyParts);
     QMap <int, double> keyframes;
-    foreach (QString keyframe, data) {
+    foreach (const QString &keyframe, data) {
        int keyframepos = keyframe.section(':', 0, 0).toInt();
        // if keyframe was at clip start, update it
        if (keyframepos == oldin) {
@@ -2055,7 +2055,7 @@ void ClipItem::updateGeometryKeyframes(QDomElement 
effect, int paramIndex, int w
     if (offset > 0) {
         QStringList kfrs = data.split(';');
         data.clear();
-        foreach (QString keyframe, kfrs) {
+        foreach (const QString &keyframe, kfrs) {
             if (keyframe.contains('=')) {
                 int pos = keyframe.section('=', 0, 0).toInt();
                 pos += offset;
diff --git a/src/documentchecker.cpp b/src/documentchecker.cpp
index 8614eea..ca612bc 100644
--- a/src/documentchecker.cpp
+++ b/src/documentchecker.cpp
@@ -176,7 +176,7 @@ bool DocumentChecker::hasErrorInClips()
             filesToCheck.append(luma);
     }
     // Check existence of luma files
-    foreach (const QString lumafile, filesToCheck) {
+    foreach (const QString &lumafile, filesToCheck) {
         filePath = lumafile;
         if (!filePath.startsWith('/')) filePath.prepend(root);
         if (!QFile::exists(filePath)) {
@@ -193,7 +193,7 @@ bool DocumentChecker::hasErrorInClips()
     m_dialog->setFont(KGlobalSettings::toolBarFont());
     m_ui.setupUi(m_dialog);
 
-    foreach(const QString l, missingLumas) {
+    foreach(const QString &l, missingLumas) {
         QTreeWidgetItem *item = new QTreeWidgetItem(m_ui.treeWidget, 
QStringList() << i18n("Luma file") << l);
         item->setIcon(0, KIcon("dialog-close"));
         item->setData(0, idRole, l);
@@ -856,7 +856,7 @@ void DocumentChecker::slotDeleteSelected()
     if (!deletedLumas.isEmpty()) {
         QDomElement e;
         QDomNodeList transitions = m_doc.elementsByTagName("transition");
-        foreach (QString lumaPath, deletedLumas) {
+        foreach (const QString &lumaPath, deletedLumas) {
             for (int i = 0; i < transitions.count(); i++) {
                 e = transitions.item(i).toElement();
                 QString resource = EffectsList::property(e, "luma");
diff --git a/src/geometrywidget.cpp b/src/geometrywidget.cpp
index e9be104..df76b25 100644
--- a/src/geometrywidget.cpp
+++ b/src/geometrywidget.cpp
@@ -278,7 +278,7 @@ QString GeometryWidget::getExtraValue(const QString &name) 
const
         QStringList list = val.split(';', QString::SkipEmptyParts);
         val.clear();
         val.append(list.takeFirst().section('/', 0, 0));
-        foreach (const QString value, list) {
+        foreach (const QString &value, list) {
             val.append(';' + value.section('/', 0, 0));
         }
     }
diff --git a/src/keyframeedit.cpp b/src/keyframeedit.cpp
index 8014cd0..e676972 100644
--- a/src/keyframeedit.cpp
+++ b/src/keyframeedit.cpp
@@ -463,7 +463,7 @@ void KeyframeEdit::checkVisibleParam()
     if (m_params.count() == 0)
         return;
     
-    foreach(QDomElement elem, m_params) {
+    foreach(const QDomElement &elem, m_params) {
         if (elem.attribute("intimeline") == "1")
             return;
     }
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index b046c30..ba8e828 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -589,7 +589,7 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & 
Url, const QString &
     if (!clipsToLoad.isEmpty() && m_activeDocument) {
         QStringList list = clipsToLoad.split(',');
         QList <QUrl> urls;
-        foreach(QString path, list) {
+        foreach(const QString &path, list) {
             kDebug() << QDir::current().absoluteFilePath(path);
             urls << 
QUrl::fromLocalFile(QDir::current().absoluteFilePath(path));
         }
diff --git a/src/parameterplotter.cpp b/src/parameterplotter.cpp
index a34a320..fbf21f1 100644
--- a/src/parameterplotter.cpp
+++ b/src/parameterplotter.cpp
@@ -248,7 +248,7 @@ void ParameterPlotter::mousePressEvent(QMouseEvent * event)
                     newpoints.append(QPointF(pt->x(), pt->y()));
                 }
                 p->clearPoints();
-                foreach(const QPointF qf, newpoints) {
+                foreach(const QPointF &qf, newpoints) {
                     p->addPoint(qf);
                 }
                 replacePlotObject(m_activeIndexPlot, p);
diff --git a/src/projecttree/meltjob.cpp b/src/projecttree/meltjob.cpp
index 27bc049..0ec44cd 100644
--- a/src/projecttree/meltjob.cpp
+++ b/src/projecttree/meltjob.cpp
@@ -96,7 +96,7 @@ void MeltJob::startJob()
     else 
         prod = m_producer->cut(in, out);
     QStringList list = producerParams.split(' ', QString::SkipEmptyParts);
-    foreach(QString data, list) {
+    foreach(const QString &data, list) {
         if (data.contains('=')) {
             prod->set(data.section('=', 0, 0).toUtf8().constData(), 
data.section('=', 1, 1).toUtf8().constData());
         }
@@ -119,7 +119,7 @@ void MeltJob::startJob()
     m_consumer->set("real_time", -KdenliveSettings::mltthreads() );
 
     list = consumerParams.split(' ', QString::SkipEmptyParts);
-    foreach(QString data, list) {
+    foreach(const QString &data, list) {
         if (data.contains('=')) {
             kDebug()<<"// filter con: "<<data;
             m_consumer->set(data.section('=', 0, 0).toUtf8().constData(), 
data.section('=', 1, 1).toUtf8().constData());
@@ -128,7 +128,7 @@ void MeltJob::startJob()
     
     Mlt::Filter mltFilter(*m_profile, filter.toUtf8().data());
     list = filterParams.split(' ', QString::SkipEmptyParts);
-    foreach(QString data, list) {
+    foreach(const QString &data, list) {
         if (data.contains('=')) {
             kDebug()<<"// filter p: "<<data;
             mltFilter.set(data.section('=', 0, 0).toUtf8().constData(), 
data.section('=', 1, 1).toUtf8().constData());
@@ -150,7 +150,7 @@ void MeltJob::startJob()
     m_consumer->stop();
     QStringList wanted = properties.split(',', QString::SkipEmptyParts);
     stringMap jobResults;
-    foreach(const QString key, wanted) {
+    foreach(const QString &key, wanted) {
         QString value = mltFilter.get(key.toUtf8().constData());
         jobResults.insert(key, value);
     }
diff --git a/src/projecttree/proxyclipjob.cpp b/src/projecttree/proxyclipjob.cpp
index 88a6ac9..2c5a241 100644
--- a/src/projecttree/proxyclipjob.cpp
+++ b/src/projecttree/proxyclipjob.cpp
@@ -52,13 +52,13 @@ void ProxyJob::startJob()
         mltParameters << "-consumer" << "avformat:" + m_dest;
         QStringList params = m_proxyParams.split('-', QString::SkipEmptyParts);
                 
-        foreach(QString s, params) {
-            s = s.simplified();
-            if (s.count(' ') == 0) {
-                s.append("=1");
+        foreach(const QString &s, params) {
+            QString t = s.simplified();
+            if (t.count(' ') == 0) {
+                t.append("=1");
             }
-            else s.replace(' ', '=');
-            mltParameters << s;
+            else t.replace(' ', '=');
+            mltParameters << t;
         }
         
         
mltParameters.append(QString("real_time=-%1").arg(KdenliveSettings::mltthreads()));
diff --git a/src/renderwidget.cpp b/src/renderwidget.cpp
index 0c5b139..a3c2b03 100644
--- a/src/renderwidget.cpp
+++ b/src/renderwidget.cpp
@@ -1426,7 +1426,7 @@ void RenderWidget::refreshParams()
         m_view.bitrateLabel->setEnabled(true);
         if ( item->data(BitratesRole).canConvert(QVariant::StringList) && 
item->data(BitratesRole).toStringList().count()) {
             QStringList bitrates = item->data(BitratesRole).toStringList();
-            foreach (QString bitrate, bitrates)
+            foreach (const QString &bitrate, bitrates)
                 m_view.comboBitrates->addItem(bitrate);
             if (item->data(DefaultBitrateRole).canConvert(QVariant::String))
                 
m_view.comboBitrates->setCurrentIndex(bitrates.indexOf(item->data(DefaultBitrateRole).toString()));
@@ -1443,7 +1443,7 @@ void RenderWidget::refreshParams()
         m_view.audiobitrateLabel->setEnabled(true);
         if ( item->data(AudioBitratesRole).canConvert(QVariant::StringList) && 
item->data(AudioBitratesRole).toStringList().count()) {
             QStringList audiobitrates = 
item->data(AudioBitratesRole).toStringList();
-            foreach (QString bitrate, audiobitrates)
+            foreach (const QString &bitrate, audiobitrates)
                 m_view.comboAudioBitrates->addItem(bitrate);
             if 
(item->data(DefaultAudioBitrateRole).canConvert(QVariant::String))
                 
m_view.comboAudioBitrates->setCurrentIndex(audiobitrates.indexOf(item->data(DefaultAudioBitrateRole).toString()));
diff --git a/src/stopmotion/stopmotion.cpp b/src/stopmotion/stopmotion.cpp
index f03fbb9..dc6c7b6 100644
--- a/src/stopmotion/stopmotion.cpp
+++ b/src/stopmotion/stopmotion.cpp
@@ -438,7 +438,7 @@ void StopmotionWidget::parseExistingSequences()
     //dir.setNameFilters(filters);
     QStringList sequences = dir.entryList(filters, QDir::Files, QDir::Name);
     //kDebug()<<"PF: "<<<<", sm: "<<sequences;
-    foreach(QString sequencename, sequences) {
+    foreach(const QString &sequencename, sequences) {
         sequence_name->addItem(sequencename.section('_', 0, -2));
     }
 }
diff --git a/src/titlewidget.cpp b/src/titlewidget.cpp
index b5073a2..d25b860 100644
--- a/src/titlewidget.cpp
+++ b/src/titlewidget.cpp
@@ -512,7 +512,7 @@ TitleWidget::TitleWidget(KUrl url, Timecode tc, QString 
projectTitlePath, Render
     //templateBox->setIconSize(QSize(60,60));
     templateBox->clear();
     templateBox->addItem("");
-    foreach(TitleTemplate t, titletemplates) {
+    foreach(const TitleTemplate &t, titletemplates) {
         templateBox->addItem(t.icon, t.name, t.file);
     }
     lastDocumentHash = QCryptographicHash::hash(xml().toString().toAscii(), 
QCryptographicHash::Md5).toHex();
diff --git a/testingArea/audioOffset.cpp b/testingArea/audioOffset.cpp
index 3d8a84b..13945f6 100644
--- a/testingArea/audioOffset.cpp
+++ b/testingArea/audioOffset.cpp
@@ -52,7 +52,7 @@ int main(int argc, char *argv[])
     bool useFFT = false;
 
     // Load arguments
-    foreach (QString str, args) {
+    foreach (const QString &str, args) {
 
         if (str.startsWith("--profile=")) {
             QString s = str;
-- 
1.7.10.4


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Kdenlive-devel mailing list
Kdenlive-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kdenlive-devel

Reply via email to