]> git.sesse.net Git - kdenlive/blobdiff - src/documentvalidator.cpp
Fix Coverity #980712
[kdenlive] / src / documentvalidator.cpp
index f18b73f23bb3fe0fb2dec8a841d2b86914a4324b..dea1e96794c49da2e27e727f5c7d178588d517c6 100644 (file)
@@ -60,7 +60,7 @@ bool DocumentValidator::validate(const double currentVersion)
     
     QString rootDir = mlt.attribute("root");
     if (rootDir == "$CURRENTPATH") {
-        // The document was extracted from a Kdenlive archived project, fix root directory$
+        // The document was extracted from a Kdenlive archived project, fix root directory
         QString playlist = m_doc.toString();
         playlist.replace("$CURRENTPATH", m_url.directory(KUrl::IgnoreTrailingSlash));
         m_doc.setContent(playlist);
@@ -73,7 +73,7 @@ bool DocumentValidator::validate(const double currentVersion)
     
     if (mlt.hasAttribute("LC_NUMERIC")) {
         // Set locale for the document        
-        QString newLocale = setlocale(LC_NUMERIC, mlt.attribute("LC_NUMERIC").toUtf8().constData());
+        const QString newLocale = setlocale(LC_NUMERIC, mlt.attribute("LC_NUMERIC").toUtf8().constData());
         documentLocale = QLocale(mlt.attribute("LC_NUMERIC"));
 
         // Make sure Qt locale and C++ locale have the same numeric separator, might not be the case
@@ -96,11 +96,13 @@ bool DocumentValidator::validate(const double currentVersion)
     documentLocale.setNumberOptions(QLocale::OmitGroupSeparator);
     if (documentLocale.decimalPoint() != QLocale().decimalPoint()) {
         // If loading an older MLT file without LC_NUMERIC, set locale to C which was previously the default
-        if (!mlt.hasAttribute("LC_NUMERIC")) setlocale(LC_NUMERIC, "C");
+        if (!mlt.hasAttribute("LC_NUMERIC")) {
+           setlocale(LC_NUMERIC, "C");
+       }
 
         QLocale::setDefault(documentLocale);
         // locale conversion might need to be redone
-        initEffects::parseEffectFiles();
+        initEffects::parseEffectFiles(setlocale(LC_NUMERIC, NULL));
     }
 
     bool ok;
@@ -110,7 +112,13 @@ bool DocumentValidator::validate(const double currentVersion)
        QLocale tempLocale = QLocale(mlt.attribute("LC_NUMERIC"));
        version = tempLocale.toDouble(kdenliveDoc.attribute("version"), &ok);
        if (!ok) version = kdenliveDoc.attribute("version").toDouble(&ok);
-       if (!ok) kDebug()<<"// CANNOT PARSE VERSION NUMBER, ERROR!";
+       if (!ok) {
+           // Last try: replace comma with a dot
+           QString versionString = kdenliveDoc.attribute("version");
+           if (versionString.contains(',')) versionString.replace(',', '.');
+           version = versionString.toDouble(&ok);
+           if (!ok) kDebug()<<"// CANNOT PARSE VERSION NUMBER, ERROR!";
+       }
     }
     
     // Upgrade the document to the latest version