From a4416e854b8c628c20a74bbaf729fa681fd5af25 Mon Sep 17 00:00:00 2001 From: Mikko Rapeli Date: Fri, 10 Aug 2012 14:17:15 +0200 Subject: [PATCH] renderer.cpp: check for null pointers Fixes Coverity CID 709292 and 709293: Dereference after null check (FORWARD_NULL) [select defect] 1917 if (original == NULL || clip == NULL) { 1918 kDebug() << "// ERROR GRABBING CLIP AFTER SPLIT"; 1919 } 1920 Mlt::Service clipService(original->get_service()); 1921 Mlt::Service dupService(clip->get_service()); 1922 delete original; 1923 delete clip; --- src/renderer.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/renderer.cpp b/src/renderer.cpp index 572b035d..26d64fe5 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -1925,11 +1925,21 @@ void Render::mltCutClip(int track, GenTime position) Mlt::Producer *original = trackPlaylist.get_clip_at(clipStart); Mlt::Producer *clip = trackPlaylist.get_clip_at(cutPos); - if (original == NULL || clip == NULL) { + 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(); + + if (original == NULL || clip == NULL) kDebug() << "// ERROR GRABBING CLIP AFTER SPLIT"; - } - Mlt::Service clipService(original->get_service()); - Mlt::Service dupService(clip->get_service()); + delete original; delete clip; int ct = 0; -- 2.39.2