Move definition of IMkvReader::~IMkvReader() to mkvparser.h.

In order to get UBSan's vptr check to work with sancov instrumentation,
an abstract class should have its methods to be defined in the same
translation unit OR to be declared as pure virtual. Otherwise, typeinfo
causes undefined symbol error during linking.

For this particular case, the issue happens due to mkvmuxer/
file using mkvparser::IMkvReader* type, while its destructor is neither
pure virtual nor defined in the header file, i.e. it is outside of the
mkvmuxer.o translation unit.


Change-Id: I881ab87d62e15d648a2c29656f1db228fdef6b42
diff --git a/mkvparser/ b/mkvparser/
index e7b76f7..9a52e52 100644
--- a/mkvparser/
+++ b/mkvparser/
@@ -36,8 +36,6 @@
 inline bool isinf(double val) { return std::isinf(val); }
 #endif  // MSC_COMPAT
-IMkvReader::~IMkvReader() {}
 template <typename Type>
 Type* SafeArrayAlloc(unsigned long long num_elements,
                      unsigned long long element_size) {
diff --git a/mkvparser/mkvparser.h b/mkvparser/mkvparser.h
index 26c2b7e..e3ff85b 100644
--- a/mkvparser/mkvparser.h
+++ b/mkvparser/mkvparser.h
@@ -22,7 +22,7 @@
   virtual int Length(long long* total, long long* available) = 0;
-  virtual ~IMkvReader();
+  virtual ~IMkvReader() {}
 template <typename Type>