]> git.sesse.net Git - kdenlive/blobdiff - src/renderer.cpp
Fix crash on clip cut introduced in recent coverity fix:
[kdenlive] / src / renderer.cpp
index 26d64fe5ecfe6dce3e1b6451f0d67afbe77f17d4..a506e4ef39cb815d950f7dcbfbe523823508a9d9 100644 (file)
@@ -1886,12 +1886,12 @@ int Render::mltInsertClip(ItemInfo info, QDomElement element, Mlt::Producer *pro
 }
 
 
-void Render::mltCutClip(int track, GenTime position)
+bool Render::mltCutClip(int track, GenTime position)
 {
     Mlt::Service service(m_mltProducer->parent().get_service());
     if (service.type() != tractor_type) {
         kWarning() << "// TRACTOR PROBLEM";
-        return;
+        return false;
     }
 
     Mlt::Tractor tractor(service);
@@ -1914,7 +1914,7 @@ void Render::mltCutClip(int track, GenTime position)
     int clipIndex = trackPlaylist.get_clip_index_at(cutPos);
     if (trackPlaylist.is_blank(clipIndex)) {
         kDebug() << "// WARNING, TRYING TO CUT A BLANK";
-        return;
+        return false;
     }
     service.lock();
     int clipStart = trackPlaylist.clip_start(clipIndex);
@@ -1924,21 +1924,15 @@ void Render::mltCutClip(int track, GenTime position)
     // duplicate effects
     Mlt::Producer *original = trackPlaylist.get_clip_at(clipStart);
     Mlt::Producer *clip = trackPlaylist.get_clip_at(cutPos);
+    
+    if (original == NULL || clip == NULL) {
+        kDebug() << "// ERROR GRABBING CLIP AFTER SPLIT";
+       return false;
+    }
 
-    Mlt::Service clipService;
-    Mlt::Service dupService;
-    if (original)
-        clipService = Mlt::Service(original->get_service());
-    else
-        clipService = Mlt::Service();
-
-    if (clip)
-        dupService = Mlt::Service(clip->get_service());
-    else
-        dupService = Mlt::Service();
+    Mlt::Service clipService(original->get_service());
+    Mlt::Service dupService(clip->get_service());
 
-    if (original == NULL || clip == NULL)
-        kDebug() << "// ERROR GRABBING CLIP AFTER SPLIT";
 
     delete original;
     delete clip;
@@ -1961,7 +1955,7 @@ void Render::mltCutClip(int track, GenTime position)
         ct++;
         filter = clipService.filter(ct);
     }
-
+    return true;
     /* // Display playlist info
     kDebug()<<"////////////  AFTER";
     for (int i = 0; i < trackPlaylist.count(); i++) {
@@ -4469,5 +4463,7 @@ bool Render::getBlackMagicOutputDeviceList(KComboBox *devicelist)
     return true;
 }
 
+
+
 #include "renderer.moc"