diff options
author | Konstantin Ritt <ritt.ks@gmail.com> | 2015-04-11 19:33:20 +0400 |
---|---|---|
committer | Konstantin Ritt <ritt.ks@gmail.com> | 2015-04-13 09:58:12 +0000 |
commit | 740f16ac602b43ee61d6d1a22ad366dbf1d72e9a (patch) | |
tree | 3635f86a15221f7e5ea9c96b81f85ddc667ddc51 | |
parent | e88da21a2024c404c19cf412a5afc0938a517bc9 (diff) |
[DirectShow] Fix potention undefined behavior on destruction
The exact warning is:
> deleting object of polymorphic class type which has non-virtual
destructor might cause undefined behavior
Change-Id: I8f259def3f1f7f776fb31ace9dfcc7145426f5c0
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
4 files changed, 8 insertions, 3 deletions
diff --git a/src/plugins/directshow/player/directshowiosource.h b/src/plugins/directshow/player/directshowiosource.h index fb3774af6..e45c8520d 100644 --- a/src/plugins/directshow/player/directshowiosource.h +++ b/src/plugins/directshow/player/directshowiosource.h @@ -49,7 +49,7 @@ class DirectShowIOSource { public: DirectShowIOSource(DirectShowEventLoop *loop); - ~DirectShowIOSource(); + virtual ~DirectShowIOSource(); void setDevice(QIODevice *device); void setAllocator(IMemAllocator *allocator); diff --git a/src/plugins/directshow/player/directshowmediatypelist.cpp b/src/plugins/directshow/player/directshowmediatypelist.cpp index c50f31eff..7adf98ceb 100644 --- a/src/plugins/directshow/player/directshowmediatypelist.cpp +++ b/src/plugins/directshow/player/directshowmediatypelist.cpp @@ -41,7 +41,7 @@ class DirectShowMediaTypeEnum : public IEnumMediaTypes { public: DirectShowMediaTypeEnum(DirectShowMediaTypeList *list, int token, int index = 0); - ~DirectShowMediaTypeEnum(); + virtual ~DirectShowMediaTypeEnum(); // IUnknown HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject); @@ -143,6 +143,10 @@ DirectShowMediaTypeList::DirectShowMediaTypeList() { } +DirectShowMediaTypeList::~DirectShowMediaTypeList() +{ +} + IEnumMediaTypes *DirectShowMediaTypeList::createMediaTypeEnum() { return new DirectShowMediaTypeEnum(this, m_mediaTypeToken, 0); diff --git a/src/plugins/directshow/player/directshowmediatypelist.h b/src/plugins/directshow/player/directshowmediatypelist.h index c06363d69..008293a1f 100644 --- a/src/plugins/directshow/player/directshowmediatypelist.h +++ b/src/plugins/directshow/player/directshowmediatypelist.h @@ -42,6 +42,7 @@ class DirectShowMediaTypeList : public IUnknown { public: DirectShowMediaTypeList(); + virtual ~DirectShowMediaTypeList(); IEnumMediaTypes *createMediaTypeEnum(); diff --git a/src/plugins/directshow/player/directshowpinenum.h b/src/plugins/directshow/player/directshowpinenum.h index 47b4e1af0..3cc62e226 100644 --- a/src/plugins/directshow/player/directshowpinenum.h +++ b/src/plugins/directshow/player/directshowpinenum.h @@ -42,7 +42,7 @@ class DirectShowPinEnum : public IEnumPins { public: DirectShowPinEnum(const QList<IPin *> &pins); - ~DirectShowPinEnum(); + virtual ~DirectShowPinEnum(); // IUnknown HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject); |