diff --git a/src/libs/timeline/timelinerenderpass.cpp b/src/libs/timeline/timelinerenderpass.cpp
index 94bbb79acb7fa39c61dc311c3d89168192cef7cd..a6a9251ba579deeed9dc6d0e9d9ccffd71b4e93a 100644
--- a/src/libs/timeline/timelinerenderpass.cpp
+++ b/src/libs/timeline/timelinerenderpass.cpp
@@ -54,6 +54,10 @@ QSGNode *TimelineRenderPass::State::collapsedOverlay() const
     return 0;
 }
 
+TimelineRenderPass::State::~State()
+{
+}
+
 TimelineRenderPass::~TimelineRenderPass() {}
 
 } // namespace Timeline
diff --git a/src/libs/timeline/timelinerenderpass.h b/src/libs/timeline/timelinerenderpass.h
index cb0d428db077c821663da111b335a6086238f655..6efb67ec7b505c551cb02ba8942a9c92a64d941e 100644
--- a/src/libs/timeline/timelinerenderpass.h
+++ b/src/libs/timeline/timelinerenderpass.h
@@ -48,6 +48,7 @@ public:
         virtual const QVector<QSGNode *> &collapsedRows() const;
         virtual QSGNode *expandedOverlay() const;
         virtual QSGNode *collapsedOverlay() const;
+        virtual ~State();
     };
 
     virtual ~TimelineRenderPass();
diff --git a/src/libs/timeline/timelinerenderstate.cpp b/src/libs/timeline/timelinerenderstate.cpp
index e014f91048747f3fc234238b64f4bb9b3a52efdc..75238660729b6f45375a3587f10b05cda63617be 100644
--- a/src/libs/timeline/timelinerenderstate.cpp
+++ b/src/libs/timeline/timelinerenderstate.cpp
@@ -58,6 +58,7 @@ TimelineRenderState::~TimelineRenderState()
     delete d->collapsedRowRoot;
     delete d->expandedOverlayRoot;
     delete d->collapsedOverlayRoot;
+    qDeleteAll(d->passes);
     delete d;
 }