mkvmuxer: Fix leak when a Cluster isn't finalized

There's a leak in the following scenario:
  * AccurateClusterDuration is set to true.
  * Add a few frames.
  * An error is encountered while adding a frame and the
    application bails without calling Cluster::Finalize
  * All the frames we queues in QueueOrWriteFrames now leak.

This patch fixes this scenario by delete'ing any left over frames
in the Cluster's destructor.

Change-Id: I104f6814db18a86fae9877decfe6cc75b8937fcb
diff --git a/mkvmuxer/mkvmuxer.cc b/mkvmuxer/mkvmuxer.cc
index 9e78e6a..d662ad5 100644
--- a/mkvmuxer/mkvmuxer.cc
+++ b/mkvmuxer/mkvmuxer.cc
@@ -2229,7 +2229,17 @@
       write_last_frame_with_duration_(write_last_frame_with_duration),
       writer_(NULL) {}
 
-Cluster::~Cluster() {}
+Cluster::~Cluster() {
+  // Delete any stored frames that are left behind. This will happen if the
+  // Cluster was not Finalized for whatever reason.
+  while (!stored_frames_.empty()) {
+    while (!stored_frames_.begin()->second.empty()) {
+      delete stored_frames_.begin()->second.front();
+      stored_frames_.begin()->second.pop_front();
+    }
+    stored_frames_.erase(stored_frames_.begin()->first);
+  }
+}
 
 bool Cluster::Init(IMkvWriter* ptr_writer) {
   if (!ptr_writer) {