From a3f00d208e4e33e9542bf2819dde076c304694e5 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Tue, 22 Mar 2016 23:19:06 +0100 Subject: [PATCH] Added multiple patches to avoid implicit cast of interface pointers. --- ...d-implicit-cast-of-interface-pointer.patch | 26 +++++++ ...d-implicit-cast-of-interface-pointer.patch | 25 ++++++ ...d-implicit-cast-of-interface-pointer.patch | 75 ++++++++++++++++++ ...d-implicit-cast-of-interface-pointer.patch | 23 ++++++ ...d-implicit-cast-of-interface-pointer.patch | 37 +++++++++ ...d-implicit-cast-of-interface-pointer.patch | 37 +++++++++ ...d-implicit-cast-of-interface-pointer.patch | 34 ++++++++ ...d-implicit-cast-of-interface-pointer.patch | 25 ++++++ ...d-implicit-cast-of-interface-pointer.patch | 25 ++++++ ...d-implicit-cast-of-interface-pointer.patch | 25 ++++++ ...d-implicit-cast-of-interface-pointer.patch | 39 ++++++++++ ...d-implicit-cast-of-interface-pointer.patch | 25 ++++++ ...d-implicit-cast-of-interface-pointer.patch | 25 ++++++ ...ement-type-in-CONTAINING_RECORD-and-.patch | 78 +++++++++++++++++++ patches/patchinstall.sh | 35 ++++++++- 15 files changed, 532 insertions(+), 2 deletions(-) create mode 100644 patches/Compiler_Warnings/0002-dsound-Avoid-implicit-cast-of-interface-pointer.patch create mode 100644 patches/Compiler_Warnings/0003-amstream-Avoid-implicit-cast-of-interface-pointer.patch create mode 100644 patches/Compiler_Warnings/0004-d2d1-Avoid-implicit-cast-of-interface-pointer.patch create mode 100644 patches/Compiler_Warnings/0005-d3d11-Avoid-implicit-cast-of-interface-pointer.patch create mode 100644 patches/Compiler_Warnings/0006-d3d8-Avoid-implicit-cast-of-interface-pointer.patch create mode 100644 patches/Compiler_Warnings/0007-d3d9-Avoid-implicit-cast-of-interface-pointer.patch create mode 100644 patches/Compiler_Warnings/0008-ddraw-Avoid-implicit-cast-of-interface-pointer.patch create mode 100644 patches/Compiler_Warnings/0009-dwrite-Avoid-implicit-cast-of-interface-pointer.patch create mode 100644 patches/Compiler_Warnings/0010-msxml3-Avoid-implicit-cast-of-interface-pointer.patch create mode 100644 patches/Compiler_Warnings/0011-oleaut32-Avoid-implicit-cast-of-interface-pointer.patch create mode 100644 patches/Compiler_Warnings/0012-quartz-Avoid-implicit-cast-of-interface-pointer.patch create mode 100644 patches/Compiler_Warnings/0013-rpcrt4-Avoid-implicit-cast-of-interface-pointer.patch create mode 100644 patches/Compiler_Warnings/0014-vbscript-Avoid-implicit-cast-of-interface-pointer.patch create mode 100644 patches/Compiler_Warnings/0015-include-Check-element-type-in-CONTAINING_RECORD-and-.patch diff --git a/patches/Compiler_Warnings/0002-dsound-Avoid-implicit-cast-of-interface-pointer.patch b/patches/Compiler_Warnings/0002-dsound-Avoid-implicit-cast-of-interface-pointer.patch new file mode 100644 index 00000000..b6215740 --- /dev/null +++ b/patches/Compiler_Warnings/0002-dsound-Avoid-implicit-cast-of-interface-pointer.patch @@ -0,0 +1,26 @@ +From de9dbd542143b13741886c3e4b9f96ffcbfaa432 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Wed, 16 Mar 2016 05:46:33 +0100 +Subject: dsound: Avoid implicit cast of interface pointer. + +Signed-off-by: Sebastian Lackner +--- + dlls/dsound/primary.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/dsound/primary.c b/dlls/dsound/primary.c +index 3f8a478..6f280f8 100644 +--- a/dlls/dsound/primary.c ++++ b/dlls/dsound/primary.c +@@ -626,7 +626,7 @@ out: + static inline IDirectSoundBufferImpl *impl_from_IDirectSoundBuffer(IDirectSoundBuffer *iface) + { + /* IDirectSoundBuffer and IDirectSoundBuffer8 use the same iface. */ +- return CONTAINING_RECORD(iface, IDirectSoundBufferImpl, IDirectSoundBuffer8_iface); ++ return CONTAINING_RECORD((IDirectSoundBuffer8 *)iface, IDirectSoundBufferImpl, IDirectSoundBuffer8_iface); + } + + /* This sets this format for the primary buffer only */ +-- +2.7.1 + diff --git a/patches/Compiler_Warnings/0003-amstream-Avoid-implicit-cast-of-interface-pointer.patch b/patches/Compiler_Warnings/0003-amstream-Avoid-implicit-cast-of-interface-pointer.patch new file mode 100644 index 00000000..44ad9517 --- /dev/null +++ b/patches/Compiler_Warnings/0003-amstream-Avoid-implicit-cast-of-interface-pointer.patch @@ -0,0 +1,25 @@ +From 83d96cdd81553544c79527c2aed329e96938af64 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 22 Mar 2016 21:54:01 +0100 +Subject: amstream: Avoid implicit cast of interface pointer. + +--- + dlls/amstream/mediastreamfilter.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/amstream/mediastreamfilter.c b/dlls/amstream/mediastreamfilter.c +index d0c6714..3f0397a 100644 +--- a/dlls/amstream/mediastreamfilter.c ++++ b/dlls/amstream/mediastreamfilter.c +@@ -70,7 +70,7 @@ typedef struct { + + static inline IMediaStreamFilterImpl *impl_from_IMediaStreamFilter(IMediaStreamFilter *iface) + { +- return CONTAINING_RECORD(iface, IMediaStreamFilterImpl, filter); ++ return CONTAINING_RECORD((IBaseFilter *)iface, IMediaStreamFilterImpl, filter.IBaseFilter_iface); + } + + static HRESULT WINAPI BasePinImpl_CheckMediaType(BasePin *This, const AM_MEDIA_TYPE *pmt) +-- +2.7.1 + diff --git a/patches/Compiler_Warnings/0004-d2d1-Avoid-implicit-cast-of-interface-pointer.patch b/patches/Compiler_Warnings/0004-d2d1-Avoid-implicit-cast-of-interface-pointer.patch new file mode 100644 index 00000000..cf39386a --- /dev/null +++ b/patches/Compiler_Warnings/0004-d2d1-Avoid-implicit-cast-of-interface-pointer.patch @@ -0,0 +1,75 @@ +From 929eaf5dcdca040cd82141ad5ddfdcbc6c5f4a03 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 22 Mar 2016 21:54:26 +0100 +Subject: d2d1: Avoid implicit cast of interface pointer. + +--- + dlls/d2d1/brush.c | 6 +++--- + dlls/d2d1/geometry.c | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/dlls/d2d1/brush.c b/dlls/d2d1/brush.c +index aa92318..19b0993 100644 +--- a/dlls/d2d1/brush.c ++++ b/dlls/d2d1/brush.c +@@ -181,7 +181,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory, + + static inline struct d2d_brush *impl_from_ID2D1SolidColorBrush(ID2D1SolidColorBrush *iface) + { +- return CONTAINING_RECORD(iface, struct d2d_brush, ID2D1Brush_iface); ++ return CONTAINING_RECORD((ID2D1Brush *)iface, struct d2d_brush, ID2D1Brush_iface); + } + + static HRESULT STDMETHODCALLTYPE d2d_solid_color_brush_QueryInterface(ID2D1SolidColorBrush *iface, +@@ -318,7 +318,7 @@ void d2d_solid_color_brush_init(struct d2d_brush *brush, ID2D1Factory *factory, + + static inline struct d2d_brush *impl_from_ID2D1LinearGradientBrush(ID2D1LinearGradientBrush *iface) + { +- return CONTAINING_RECORD(iface, struct d2d_brush, ID2D1Brush_iface); ++ return CONTAINING_RECORD((ID2D1Brush *)iface, struct d2d_brush, ID2D1Brush_iface); + } + + static HRESULT STDMETHODCALLTYPE d2d_linear_gradient_brush_QueryInterface(ID2D1LinearGradientBrush *iface, +@@ -476,7 +476,7 @@ void d2d_linear_gradient_brush_init(struct d2d_brush *brush, ID2D1Factory *facto + + static inline struct d2d_brush *impl_from_ID2D1BitmapBrush(ID2D1BitmapBrush *iface) + { +- return CONTAINING_RECORD(iface, struct d2d_brush, ID2D1Brush_iface); ++ return CONTAINING_RECORD((ID2D1Brush *)iface, struct d2d_brush, ID2D1Brush_iface); + } + + static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface(ID2D1BitmapBrush *iface, +diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c +index 9fa1783..125c610 100644 +--- a/dlls/d2d1/geometry.c ++++ b/dlls/d2d1/geometry.c +@@ -2022,7 +2022,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl = + + static inline struct d2d_geometry *impl_from_ID2D1PathGeometry(ID2D1PathGeometry *iface) + { +- return CONTAINING_RECORD(iface, struct d2d_geometry, ID2D1Geometry_iface); ++ return CONTAINING_RECORD((ID2D1Geometry *)iface, struct d2d_geometry, ID2D1Geometry_iface); + } + + static HRESULT STDMETHODCALLTYPE d2d_path_geometry_QueryInterface(ID2D1PathGeometry *iface, REFIID iid, void **out) +@@ -2283,7 +2283,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory + + static inline struct d2d_geometry *impl_from_ID2D1RectangleGeometry(ID2D1RectangleGeometry *iface) + { +- return CONTAINING_RECORD(iface, struct d2d_geometry, ID2D1Geometry_iface); ++ return CONTAINING_RECORD((ID2D1Geometry *)iface, struct d2d_geometry, ID2D1Geometry_iface); + } + + static HRESULT STDMETHODCALLTYPE d2d_rectangle_geometry_QueryInterface(ID2D1RectangleGeometry *iface, +@@ -2531,7 +2531,7 @@ HRESULT d2d_rectangle_geometry_init(struct d2d_geometry *geometry, ID2D1Factory + + static inline struct d2d_geometry *impl_from_ID2D1TransformedGeometry(ID2D1TransformedGeometry *iface) + { +- return CONTAINING_RECORD(iface, struct d2d_geometry, ID2D1Geometry_iface); ++ return CONTAINING_RECORD((ID2D1Geometry *)iface, struct d2d_geometry, ID2D1Geometry_iface); + } + + static HRESULT STDMETHODCALLTYPE d2d_transformed_geometry_QueryInterface(ID2D1TransformedGeometry *iface, +-- +2.7.1 + diff --git a/patches/Compiler_Warnings/0005-d3d11-Avoid-implicit-cast-of-interface-pointer.patch b/patches/Compiler_Warnings/0005-d3d11-Avoid-implicit-cast-of-interface-pointer.patch new file mode 100644 index 00000000..31e1728d --- /dev/null +++ b/patches/Compiler_Warnings/0005-d3d11-Avoid-implicit-cast-of-interface-pointer.patch @@ -0,0 +1,23 @@ +From 71e593294e868bafa0b0b45c2694d7c0dceb0d64 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 22 Mar 2016 21:54:48 +0100 +Subject: d3d11: Avoid implicit cast of interface pointer. + +--- + dlls/d3d11/view.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/d3d11/view.c b/dlls/d3d11/view.c +index 1d9b766..78fc1ad 100644 +--- a/dlls/d3d11/view.c ++++ b/dlls/d3d11/view.c +@@ -1559,5 +1559,5 @@ struct d3d_shader_resource_view *unsafe_impl_from_ID3D10ShaderResourceView(ID3D1 + if (!iface) + return NULL; + assert(iface->lpVtbl == (ID3D10ShaderResourceViewVtbl *)&d3d10_shader_resource_view_vtbl); +- return CONTAINING_RECORD(iface, struct d3d_shader_resource_view, ID3D10ShaderResourceView1_iface); ++ return CONTAINING_RECORD((ID3D10ShaderResourceView1 *)iface, struct d3d_shader_resource_view, ID3D10ShaderResourceView1_iface); + } +-- +2.7.1 + diff --git a/patches/Compiler_Warnings/0006-d3d8-Avoid-implicit-cast-of-interface-pointer.patch b/patches/Compiler_Warnings/0006-d3d8-Avoid-implicit-cast-of-interface-pointer.patch new file mode 100644 index 00000000..df7251ce --- /dev/null +++ b/patches/Compiler_Warnings/0006-d3d8-Avoid-implicit-cast-of-interface-pointer.patch @@ -0,0 +1,37 @@ +From 0913c58ca5a15868fa72c883d46db1f0038a2e22 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 22 Mar 2016 21:55:00 +0100 +Subject: d3d8: Avoid implicit cast of interface pointer. + +--- + dlls/d3d8/texture.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/dlls/d3d8/texture.c b/dlls/d3d8/texture.c +index 7ed79a5..62463ba 100644 +--- a/dlls/d3d8/texture.c ++++ b/dlls/d3d8/texture.c +@@ -23,17 +23,17 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d8); + + static inline struct d3d8_texture *impl_from_IDirect3DTexture8(IDirect3DTexture8 *iface) + { +- return CONTAINING_RECORD(iface, struct d3d8_texture, IDirect3DBaseTexture8_iface); ++ return CONTAINING_RECORD((IDirect3DBaseTexture8 *)iface, struct d3d8_texture, IDirect3DBaseTexture8_iface); + } + + static inline struct d3d8_texture *impl_from_IDirect3DCubeTexture8(IDirect3DCubeTexture8 *iface) + { +- return CONTAINING_RECORD(iface, struct d3d8_texture, IDirect3DBaseTexture8_iface); ++ return CONTAINING_RECORD((IDirect3DBaseTexture8 *)iface, struct d3d8_texture, IDirect3DBaseTexture8_iface); + } + + static inline struct d3d8_texture *impl_from_IDirect3DVolumeTexture8(IDirect3DVolumeTexture8 *iface) + { +- return CONTAINING_RECORD(iface, struct d3d8_texture, IDirect3DBaseTexture8_iface); ++ return CONTAINING_RECORD((IDirect3DBaseTexture8 *)iface, struct d3d8_texture, IDirect3DBaseTexture8_iface); + } + + static HRESULT WINAPI d3d8_texture_2d_QueryInterface(IDirect3DTexture8 *iface, REFIID riid, void **out) +-- +2.7.1 + diff --git a/patches/Compiler_Warnings/0007-d3d9-Avoid-implicit-cast-of-interface-pointer.patch b/patches/Compiler_Warnings/0007-d3d9-Avoid-implicit-cast-of-interface-pointer.patch new file mode 100644 index 00000000..ac85e296 --- /dev/null +++ b/patches/Compiler_Warnings/0007-d3d9-Avoid-implicit-cast-of-interface-pointer.patch @@ -0,0 +1,37 @@ +From cd3c63b259a711abf4e6e06f975e47f82b5b3e1b Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 22 Mar 2016 21:55:12 +0100 +Subject: d3d9: Avoid implicit cast of interface pointer. + +--- + dlls/d3d9/texture.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/dlls/d3d9/texture.c b/dlls/d3d9/texture.c +index 07bd83e..4e50093 100644 +--- a/dlls/d3d9/texture.c ++++ b/dlls/d3d9/texture.c +@@ -25,17 +25,17 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d9); + + static inline struct d3d9_texture *impl_from_IDirect3DTexture9(IDirect3DTexture9 *iface) + { +- return CONTAINING_RECORD(iface, struct d3d9_texture, IDirect3DBaseTexture9_iface); ++ return CONTAINING_RECORD((IDirect3DBaseTexture9 *)iface, struct d3d9_texture, IDirect3DBaseTexture9_iface); + } + + static inline struct d3d9_texture *impl_from_IDirect3DCubeTexture9(IDirect3DCubeTexture9 *iface) + { +- return CONTAINING_RECORD(iface, struct d3d9_texture, IDirect3DBaseTexture9_iface); ++ return CONTAINING_RECORD((IDirect3DBaseTexture9 *)iface, struct d3d9_texture, IDirect3DBaseTexture9_iface); + } + + static inline struct d3d9_texture *impl_from_IDirect3DVolumeTexture9(IDirect3DVolumeTexture9 *iface) + { +- return CONTAINING_RECORD(iface, struct d3d9_texture, IDirect3DBaseTexture9_iface); ++ return CONTAINING_RECORD((IDirect3DBaseTexture9 *)iface, struct d3d9_texture, IDirect3DBaseTexture9_iface); + } + + static HRESULT WINAPI d3d9_texture_2d_QueryInterface(IDirect3DTexture9 *iface, REFIID riid, void **out) +-- +2.7.1 + diff --git a/patches/Compiler_Warnings/0008-ddraw-Avoid-implicit-cast-of-interface-pointer.patch b/patches/Compiler_Warnings/0008-ddraw-Avoid-implicit-cast-of-interface-pointer.patch new file mode 100644 index 00000000..ac024b2d --- /dev/null +++ b/patches/Compiler_Warnings/0008-ddraw-Avoid-implicit-cast-of-interface-pointer.patch @@ -0,0 +1,34 @@ +From ff2e84fd4c6c12b5e9e6c9d793b71159295b1e01 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 22 Mar 2016 21:58:30 +0100 +Subject: ddraw: Avoid implicit cast of interface pointer. + +--- + dlls/ddraw/viewport.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/dlls/ddraw/viewport.c b/dlls/ddraw/viewport.c +index 5ebc41e..4f61d10 100644 +--- a/dlls/ddraw/viewport.c ++++ b/dlls/ddraw/viewport.c +@@ -1121,7 +1121,7 @@ struct d3d_viewport *unsafe_impl_from_IDirect3DViewport2(IDirect3DViewport2 *ifa + /* IDirect3DViewport and IDirect3DViewport3 use the same iface. */ + if (!iface) return NULL; + assert(iface->lpVtbl == (IDirect3DViewport2Vtbl *)&d3d_viewport_vtbl); +- return CONTAINING_RECORD(iface, struct d3d_viewport, IDirect3DViewport3_iface); ++ return CONTAINING_RECORD((IDirect3DViewport3 *)iface, struct d3d_viewport, IDirect3DViewport3_iface); + } + + struct d3d_viewport *unsafe_impl_from_IDirect3DViewport(IDirect3DViewport *iface) +@@ -1129,7 +1129,7 @@ struct d3d_viewport *unsafe_impl_from_IDirect3DViewport(IDirect3DViewport *iface + /* IDirect3DViewport and IDirect3DViewport3 use the same iface. */ + if (!iface) return NULL; + assert(iface->lpVtbl == (IDirect3DViewportVtbl *)&d3d_viewport_vtbl); +- return CONTAINING_RECORD(iface, struct d3d_viewport, IDirect3DViewport3_iface); ++ return CONTAINING_RECORD((IDirect3DViewport3 *)iface, struct d3d_viewport, IDirect3DViewport3_iface); + } + + void d3d_viewport_init(struct d3d_viewport *viewport, struct ddraw *ddraw) +-- +2.7.1 + diff --git a/patches/Compiler_Warnings/0009-dwrite-Avoid-implicit-cast-of-interface-pointer.patch b/patches/Compiler_Warnings/0009-dwrite-Avoid-implicit-cast-of-interface-pointer.patch new file mode 100644 index 00000000..e8145733 --- /dev/null +++ b/patches/Compiler_Warnings/0009-dwrite-Avoid-implicit-cast-of-interface-pointer.patch @@ -0,0 +1,25 @@ +From 869fbc7190eb77e027be4bcd98d938198189c3dd Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 22 Mar 2016 21:58:40 +0100 +Subject: dwrite: Avoid implicit cast of interface pointer. + +--- + dlls/dwrite/layout.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c +index 38b5e32..24f4abc 100644 +--- a/dlls/dwrite/layout.c ++++ b/dlls/dwrite/layout.c +@@ -5115,7 +5115,7 @@ static const IDWriteTextFormat2Vtbl dwritetextformatvtbl = { + static struct dwrite_textformat *unsafe_impl_from_IDWriteTextFormat(IDWriteTextFormat *iface) + { + return (iface->lpVtbl == (IDWriteTextFormatVtbl*)&dwritetextformatvtbl) ? +- CONTAINING_RECORD(iface, struct dwrite_textformat, IDWriteTextFormat2_iface) : NULL; ++ CONTAINING_RECORD((IDWriteTextFormat2 *)iface, struct dwrite_textformat, IDWriteTextFormat2_iface) : NULL; + } + + HRESULT create_textformat(const WCHAR *family_name, IDWriteFontCollection *collection, DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STYLE style, +-- +2.7.1 + diff --git a/patches/Compiler_Warnings/0010-msxml3-Avoid-implicit-cast-of-interface-pointer.patch b/patches/Compiler_Warnings/0010-msxml3-Avoid-implicit-cast-of-interface-pointer.patch new file mode 100644 index 00000000..39c37bbd --- /dev/null +++ b/patches/Compiler_Warnings/0010-msxml3-Avoid-implicit-cast-of-interface-pointer.patch @@ -0,0 +1,25 @@ +From 665373effeadbf44f75dd15b6ea27ebec0fd7190 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 22 Mar 2016 22:28:09 +0100 +Subject: msxml3: Avoid implicit cast of interface pointer. + +--- + dlls/msxml3/schema.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/msxml3/schema.c b/dlls/msxml3/schema.c +index f92130a..03d24b2 100644 +--- a/dlls/msxml3/schema.c ++++ b/dlls/msxml3/schema.c +@@ -809,7 +809,7 @@ static inline schema_cache* impl_from_IXMLDOMSchemaCollection2(IXMLDOMSchemaColl + + static inline schema_cache* impl_from_IXMLDOMSchemaCollection(IXMLDOMSchemaCollection* iface) + { +- return CONTAINING_RECORD(iface, schema_cache, IXMLDOMSchemaCollection2_iface); ++ return CONTAINING_RECORD((IXMLDOMSchemaCollection2 *)iface, schema_cache, IXMLDOMSchemaCollection2_iface); + } + + static inline schema_cache* unsafe_impl_from_IXMLDOMSchemaCollection(IXMLDOMSchemaCollection *iface) +-- +2.7.1 + diff --git a/patches/Compiler_Warnings/0011-oleaut32-Avoid-implicit-cast-of-interface-pointer.patch b/patches/Compiler_Warnings/0011-oleaut32-Avoid-implicit-cast-of-interface-pointer.patch new file mode 100644 index 00000000..cf822b2e --- /dev/null +++ b/patches/Compiler_Warnings/0011-oleaut32-Avoid-implicit-cast-of-interface-pointer.patch @@ -0,0 +1,25 @@ +From 60ab37cc3ba6cb771fccc187ea87b669ac83dc80 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 22 Mar 2016 22:28:23 +0100 +Subject: oleaut32: Avoid implicit cast of interface pointer. + +--- + dlls/oleaut32/oleaut.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/oleaut32/oleaut.c b/dlls/oleaut32/oleaut.c +index 742e63f..8dae150 100644 +--- a/dlls/oleaut32/oleaut.c ++++ b/dlls/oleaut32/oleaut.c +@@ -117,7 +117,7 @@ static inline size_t bstr_alloc_size(size_t size) + + static inline bstr_t *bstr_from_str(BSTR str) + { +- return CONTAINING_RECORD(str, bstr_t, u.str); ++ return CONTAINING_RECORD((void *)str, bstr_t, u.str); + } + + static inline bstr_cache_entry_t *get_cache_entry_from_idx(unsigned cache_idx) +-- +2.7.1 + diff --git a/patches/Compiler_Warnings/0012-quartz-Avoid-implicit-cast-of-interface-pointer.patch b/patches/Compiler_Warnings/0012-quartz-Avoid-implicit-cast-of-interface-pointer.patch new file mode 100644 index 00000000..6116d49a --- /dev/null +++ b/patches/Compiler_Warnings/0012-quartz-Avoid-implicit-cast-of-interface-pointer.patch @@ -0,0 +1,39 @@ +From afaa960b059c2e6bf75635c4e2d96be774ece41a Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 22 Mar 2016 22:45:29 +0100 +Subject: quartz: Avoid implicit cast of interface pointer. + +--- + dlls/quartz/acmwrapper.c | 2 +- + dlls/quartz/avidec.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/dlls/quartz/acmwrapper.c b/dlls/quartz/acmwrapper.c +index d9a94a9..3c1c7cf 100644 +--- a/dlls/quartz/acmwrapper.c ++++ b/dlls/quartz/acmwrapper.c +@@ -55,7 +55,7 @@ static const IBaseFilterVtbl ACMWrapper_Vtbl; + + static inline ACMWrapperImpl *impl_from_TransformFilter( TransformFilter *iface ) + { +- return CONTAINING_RECORD(iface, ACMWrapperImpl, tf.filter); ++ return CONTAINING_RECORD(iface, ACMWrapperImpl, tf); + } + + static HRESULT WINAPI ACMWrapper_Receive(TransformFilter *tf, IMediaSample *pSample) +diff --git a/dlls/quartz/avidec.c b/dlls/quartz/avidec.c +index 1a58844..eb9b223 100644 +--- a/dlls/quartz/avidec.c ++++ b/dlls/quartz/avidec.c +@@ -54,7 +54,7 @@ static const IBaseFilterVtbl AVIDec_Vtbl; + + static inline AVIDecImpl *impl_from_TransformFilter( TransformFilter *iface ) + { +- return CONTAINING_RECORD(iface, AVIDecImpl, tf.filter); ++ return CONTAINING_RECORD(iface, AVIDecImpl, tf); + } + + static HRESULT WINAPI AVIDec_StartStreaming(TransformFilter* pTransformFilter) +-- +2.7.1 + diff --git a/patches/Compiler_Warnings/0013-rpcrt4-Avoid-implicit-cast-of-interface-pointer.patch b/patches/Compiler_Warnings/0013-rpcrt4-Avoid-implicit-cast-of-interface-pointer.patch new file mode 100644 index 00000000..e302ba64 --- /dev/null +++ b/patches/Compiler_Warnings/0013-rpcrt4-Avoid-implicit-cast-of-interface-pointer.patch @@ -0,0 +1,25 @@ +From e35d665256d08ebccee30361867ba57f790d519f Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 22 Mar 2016 23:01:32 +0100 +Subject: rpcrt4: Avoid implicit cast of interface pointer. + +--- + dlls/rpcrt4/cstub.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/rpcrt4/cstub.c b/dlls/rpcrt4/cstub.c +index 838ed03..992c235 100644 +--- a/dlls/rpcrt4/cstub.c ++++ b/dlls/rpcrt4/cstub.c +@@ -59,7 +59,7 @@ typedef struct + + static inline cstdstubbuffer_delegating_t *impl_from_delegating( IRpcStubBuffer *iface ) + { +- return CONTAINING_RECORD(iface, cstdstubbuffer_delegating_t, stub_buffer); ++ return CONTAINING_RECORD((void *)iface, cstdstubbuffer_delegating_t, stub_buffer); + } + + HRESULT CStdStubBuffer_Construct(REFIID riid, +-- +2.7.1 + diff --git a/patches/Compiler_Warnings/0014-vbscript-Avoid-implicit-cast-of-interface-pointer.patch b/patches/Compiler_Warnings/0014-vbscript-Avoid-implicit-cast-of-interface-pointer.patch new file mode 100644 index 00000000..2b4abcd3 --- /dev/null +++ b/patches/Compiler_Warnings/0014-vbscript-Avoid-implicit-cast-of-interface-pointer.patch @@ -0,0 +1,25 @@ +From 1806798cf9b186d2c788f5a94074d0d6fa426f9e Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 22 Mar 2016 23:01:48 +0100 +Subject: vbscript: Avoid implicit cast of interface pointer. + +--- + dlls/vbscript/vbdisp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/vbscript/vbdisp.c b/dlls/vbscript/vbdisp.c +index 9c0c4c1..daed7ec 100644 +--- a/dlls/vbscript/vbdisp.c ++++ b/dlls/vbscript/vbdisp.c +@@ -555,7 +555,7 @@ static IDispatchExVtbl DispatchExVtbl = { + static inline vbdisp_t *unsafe_impl_from_IDispatch(IDispatch *iface) + { + return iface->lpVtbl == (IDispatchVtbl*)&DispatchExVtbl +- ? CONTAINING_RECORD(iface, vbdisp_t, IDispatchEx_iface) ++ ? CONTAINING_RECORD((IDispatchEx *)iface, vbdisp_t, IDispatchEx_iface) + : NULL; + } + +-- +2.7.1 + diff --git a/patches/Compiler_Warnings/0015-include-Check-element-type-in-CONTAINING_RECORD-and-.patch b/patches/Compiler_Warnings/0015-include-Check-element-type-in-CONTAINING_RECORD-and-.patch new file mode 100644 index 00000000..863a0057 --- /dev/null +++ b/patches/Compiler_Warnings/0015-include-Check-element-type-in-CONTAINING_RECORD-and-.patch @@ -0,0 +1,78 @@ +From a273dda8bac492d1b04ba3b325599d7a3c5330b2 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 22 Mar 2016 23:08:30 +0100 +Subject: include: Check element type in CONTAINING_RECORD and similar macros. + +--- + include/wine/list.h | 10 ++++++++-- + include/wine/rbtree.h | 12 ++++++++++-- + include/winnt.h | 10 ++++++++-- + 3 files changed, 26 insertions(+), 6 deletions(-) + +diff --git a/include/wine/list.h b/include/wine/list.h +index b4d681f..287ad39 100644 +--- a/include/wine/list.h ++++ b/include/wine/list.h +@@ -228,7 +228,13 @@ static inline void list_move_head( struct list *dst, struct list *src ) + + /* get pointer to object containing list element */ + #undef LIST_ENTRY +-#define LIST_ENTRY(elem, type, field) \ +- ((type *)((char *)(elem) - offsetof(type, field))) ++#ifdef __GNUC__ ++# define LIST_ENTRY(elem, type, field) ({ \ ++ const typeof(((type *)0)->field) *__ptr = (elem); \ ++ (type *)((char *)__ptr - offsetof(type, field)); }) ++#else ++# define LIST_ENTRY(elem, type, field) \ ++ ((type *)((char *)(elem) - offsetof(type, field))) ++#endif + + #endif /* __WINE_SERVER_LIST_H */ +diff --git a/include/wine/rbtree.h b/include/wine/rbtree.h +index 13452d9..a5a1cdd 100644 +--- a/include/wine/rbtree.h ++++ b/include/wine/rbtree.h +@@ -22,8 +22,16 @@ + #ifndef __WINE_WINE_RBTREE_H + #define __WINE_WINE_RBTREE_H + +-#define WINE_RB_ENTRY_VALUE(element, type, field) \ +- ((type *)((char *)(element) - offsetof(type, field))) ++#ifdef __GNUC__ ++# define WINE_RB_ENTRY_VALUE(element, type, field) ({ \ ++ const typeof(((type *)0)->field) *__ptr = (element); \ ++ (type *)((char *)__ptr - offsetof(type, field)); }) ++#else ++# define WINE_RB_ENTRY_VALUE(element, type, field) \ ++ ((type *)((char *)(element) - offsetof(type, field))) ++#endif ++ ++ + + struct wine_rb_entry + { +diff --git a/include/winnt.h b/include/winnt.h +index 559a719..4a711f4 100644 +--- a/include/winnt.h ++++ b/include/winnt.h +@@ -753,8 +753,14 @@ typedef struct _MEMORY_BASIC_INFORMATION + + #define FIELD_OFFSET(type, field) ((LONG)offsetof(type, field)) + +-#define CONTAINING_RECORD(address, type, field) \ +- ((type *)((PCHAR)(address) - offsetof(type, field))) ++#ifdef __GNUC__ ++# define CONTAINING_RECORD(address, type, field) ({ \ ++ const typeof(((type *)0)->field) *__ptr = (address); \ ++ (type *)((PCHAR)__ptr - offsetof(type, field)); }) ++#else ++# define CONTAINING_RECORD(address, type, field) \ ++ ((type *)((PCHAR)(address) - offsetof(type, field))) ++#endif + + /* Types */ + +-- +2.7.1 + diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 1b65e245..82991448 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -2378,13 +2378,44 @@ fi # Patchset Compiler_Warnings # | # | Modified files: -# | * dlls/d3d9/tests/visual.c, dlls/netapi32/netapi32.c, dlls/winealsa.drv/mmdevdrv.c, dlls/wined3d/glsl_shader.c, -# | tools/makedep.c +# | * dlls/amstream/mediastreamfilter.c, dlls/d2d1/brush.c, dlls/d2d1/geometry.c, dlls/d3d11/view.c, dlls/d3d8/texture.c, +# | dlls/d3d9/tests/visual.c, dlls/d3d9/texture.c, dlls/ddraw/viewport.c, dlls/dsound/primary.c, dlls/dwrite/layout.c, +# | dlls/msxml3/schema.c, dlls/netapi32/netapi32.c, dlls/oleaut32/oleaut.c, dlls/quartz/acmwrapper.c, dlls/quartz/avidec.c, +# | dlls/rpcrt4/cstub.c, dlls/vbscript/vbdisp.c, dlls/winealsa.drv/mmdevdrv.c, dlls/wined3d/glsl_shader.c, +# | include/wine/list.h, include/wine/rbtree.h, include/winnt.h, tools/makedep.c # | if test "$enable_Compiler_Warnings" -eq 1; then patch_apply Compiler_Warnings/0001-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch + patch_apply Compiler_Warnings/0002-dsound-Avoid-implicit-cast-of-interface-pointer.patch + patch_apply Compiler_Warnings/0003-amstream-Avoid-implicit-cast-of-interface-pointer.patch + patch_apply Compiler_Warnings/0004-d2d1-Avoid-implicit-cast-of-interface-pointer.patch + patch_apply Compiler_Warnings/0005-d3d11-Avoid-implicit-cast-of-interface-pointer.patch + patch_apply Compiler_Warnings/0006-d3d8-Avoid-implicit-cast-of-interface-pointer.patch + patch_apply Compiler_Warnings/0007-d3d9-Avoid-implicit-cast-of-interface-pointer.patch + patch_apply Compiler_Warnings/0008-ddraw-Avoid-implicit-cast-of-interface-pointer.patch + patch_apply Compiler_Warnings/0009-dwrite-Avoid-implicit-cast-of-interface-pointer.patch + patch_apply Compiler_Warnings/0010-msxml3-Avoid-implicit-cast-of-interface-pointer.patch + patch_apply Compiler_Warnings/0011-oleaut32-Avoid-implicit-cast-of-interface-pointer.patch + patch_apply Compiler_Warnings/0012-quartz-Avoid-implicit-cast-of-interface-pointer.patch + patch_apply Compiler_Warnings/0013-rpcrt4-Avoid-implicit-cast-of-interface-pointer.patch + patch_apply Compiler_Warnings/0014-vbscript-Avoid-implicit-cast-of-interface-pointer.patch + patch_apply Compiler_Warnings/0015-include-Check-element-type-in-CONTAINING_RECORD-and-.patch ( echo '+ { "Erich E. Hoover", "Appease the blessed version of gcc (4.5) when -Werror is enabled.", 1 },'; + echo '+ { "Sebastian Lackner", "dsound: Avoid implicit cast of interface pointer.", 1 },'; + echo '+ { "Sebastian Lackner", "amstream: Avoid implicit cast of interface pointer.", 1 },'; + echo '+ { "Sebastian Lackner", "d2d1: Avoid implicit cast of interface pointer.", 1 },'; + echo '+ { "Sebastian Lackner", "d3d11: Avoid implicit cast of interface pointer.", 1 },'; + echo '+ { "Sebastian Lackner", "d3d8: Avoid implicit cast of interface pointer.", 1 },'; + echo '+ { "Sebastian Lackner", "d3d9: Avoid implicit cast of interface pointer.", 1 },'; + echo '+ { "Sebastian Lackner", "ddraw: Avoid implicit cast of interface pointer.", 1 },'; + echo '+ { "Sebastian Lackner", "dwrite: Avoid implicit cast of interface pointer.", 1 },'; + echo '+ { "Sebastian Lackner", "msxml3: Avoid implicit cast of interface pointer.", 1 },'; + echo '+ { "Sebastian Lackner", "oleaut32: Avoid implicit cast of interface pointer.", 1 },'; + echo '+ { "Sebastian Lackner", "quartz: Avoid implicit cast of interface pointer.", 1 },'; + echo '+ { "Sebastian Lackner", "rpcrt4: Avoid implicit cast of interface pointer.", 1 },'; + echo '+ { "Sebastian Lackner", "vbscript: Avoid implicit cast of interface pointer.", 1 },'; + echo '+ { "Sebastian Lackner", "include: Check element type in CONTAINING_RECORD and similar macros.", 1 },'; ) >> "$patchlist" fi