diff --git a/patches/amstream-GetMultiMediaStream/0001-amstream-Implement-IAMMediaStream-GetMultiMediaStrea.patch b/patches/amstream-GetMultiMediaStream/0001-amstream-Implement-IAMMediaStream-GetMultiMediaStrea.patch deleted file mode 100644 index 648e787d..00000000 --- a/patches/amstream-GetMultiMediaStream/0001-amstream-Implement-IAMMediaStream-GetMultiMediaStrea.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 4d0e6bbc00bd49b8dcfce494bd7380c49f58f92b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Tue, 28 Jul 2015 18:21:20 +0200 -Subject: amstream: Implement IAMMediaStream::GetMultiMediaStream. - ---- - dlls/amstream/mediastream.c | 40 ++++++++++++++++++++++++++++++++-------- - 1 file changed, 32 insertions(+), 8 deletions(-) - -diff --git a/dlls/amstream/mediastream.c b/dlls/amstream/mediastream.c -index 947be1e..e4e15d7 100644 ---- a/dlls/amstream/mediastream.c -+++ b/dlls/amstream/mediastream.c -@@ -110,9 +110,15 @@ static HRESULT WINAPI DirectDrawMediaStreamImpl_IAMMediaStream_GetMultiMediaStre - { - DirectDrawMediaStreamImpl *This = impl_from_DirectDrawMediaStream_IAMMediaStream(iface); - -- FIXME("(%p/%p)->(%p) stub!\n", This, iface, multi_media_stream); -+ TRACE("(%p/%p)->(%p) stub!\n", This, iface, multi_media_stream); - -- return S_FALSE; -+ if (!multi_media_stream) -+ return E_POINTER; -+ -+ IMultiMediaStream_AddRef(This->parent); -+ *multi_media_stream = This->parent; -+ -+ return S_OK; - } - - static HRESULT WINAPI DirectDrawMediaStreamImpl_IAMMediaStream_GetInformation(IAMMediaStream *iface, -@@ -271,9 +277,15 @@ static HRESULT WINAPI DirectDrawMediaStreamImpl_IDirectDrawMediaStream_GetMultiM - { - DirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface); - -- FIXME("(%p/%p)->(%p) stub!\n", This, iface, ppMultiMediaStream); -+ TRACE("(%p/%p)->(%p) stub!\n", This, iface, ppMultiMediaStream); - -- return S_FALSE; -+ if (!ppMultiMediaStream) -+ return E_POINTER; -+ -+ IMultiMediaStream_AddRef(This->parent); -+ *ppMultiMediaStream = This->parent; -+ -+ return S_OK; - } - - static HRESULT WINAPI DirectDrawMediaStreamImpl_IDirectDrawMediaStream_GetInformation(IDirectDrawMediaStream *iface, -@@ -511,9 +523,15 @@ static HRESULT WINAPI AudioMediaStreamImpl_IAMMediaStream_GetMultiMediaStream(IA - { - AudioMediaStreamImpl *This = impl_from_AudioMediaStream_IAMMediaStream(iface); - -- FIXME("(%p/%p)->(%p) stub!\n", This, iface, multi_media_stream); -+ TRACE("(%p/%p)->(%p)\n", This, iface, multi_media_stream); - -- return S_FALSE; -+ if (!multi_media_stream) -+ return E_POINTER; -+ -+ IMultiMediaStream_AddRef(This->parent); -+ *multi_media_stream = This->parent; -+ -+ return S_OK; - } - - static HRESULT WINAPI AudioMediaStreamImpl_IAMMediaStream_GetInformation(IAMMediaStream *iface, -@@ -672,9 +690,15 @@ static HRESULT WINAPI AudioMediaStreamImpl_IAudioMediaStream_GetMultiMediaStream - { - AudioMediaStreamImpl *This = impl_from_IAudioMediaStream(iface); - -- FIXME("(%p/%p)->(%p) stub!\n", iface, This, multimedia_stream); -+ TRACE("(%p/%p)->(%p)\n", iface, This, multimedia_stream); - -- return S_FALSE; -+ if (!multimedia_stream) -+ return E_POINTER; -+ -+ IMultiMediaStream_AddRef(This->parent); -+ *multimedia_stream = This->parent; -+ -+ return S_OK; - } - - static HRESULT WINAPI AudioMediaStreamImpl_IAudioMediaStream_GetInformation(IAudioMediaStream *iface, --- -2.4.5 - diff --git a/patches/amstream-GetMultiMediaStream/definition b/patches/amstream-GetMultiMediaStream/definition deleted file mode 100644 index b2bb3b3a..00000000 --- a/patches/amstream-GetMultiMediaStream/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [37090] Implement AMStream GetMultiMediaStream functions diff --git a/patches/d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch b/patches/d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch index ea1179dd..724fe41b 100644 --- a/patches/d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch +++ b/patches/d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch @@ -1,4 +1,4 @@ -From 66ea1296b0b3493271a7611bfa56b0d74b34b16c Mon Sep 17 00:00:00 2001 +From 4283d60c4b362e518c7028484b44d9df2ecd27cc Mon Sep 17 00:00:00 2001 From: Christian Costa Date: Fri, 19 Dec 2014 22:31:46 +0100 Subject: d3dx9_36: Implement ID3DXEffect_FindNextValidTechnique + add tests. @@ -9,10 +9,10 @@ Subject: d3dx9_36: Implement ID3DXEffect_FindNextValidTechnique + add tests. 2 files changed, 91 insertions(+), 3 deletions(-) diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c -index a210bb3..2fbc1cb 100644 +index da7de54..809f11e 100644 --- a/dlls/d3dx9_36/effect.c +++ b/dlls/d3dx9_36/effect.c -@@ -3483,13 +3483,41 @@ static HRESULT WINAPI ID3DXEffectImpl_ValidateTechnique(ID3DXEffect* iface, D3DX +@@ -3542,13 +3542,41 @@ static HRESULT WINAPI ID3DXEffectImpl_ValidateTechnique(ID3DXEffect* iface, D3DX return D3D_OK; } @@ -58,11 +58,11 @@ index a210bb3..2fbc1cb 100644 static BOOL WINAPI ID3DXEffectImpl_IsParameterUsed(ID3DXEffect* iface, D3DXHANDLE parameter, D3DXHANDLE technique) diff --git a/dlls/d3dx9_36/tests/effect.c b/dlls/d3dx9_36/tests/effect.c -index c388e7d..8653e0e 100644 +index 4ef4d4c..59cd6cc 100644 --- a/dlls/d3dx9_36/tests/effect.c +++ b/dlls/d3dx9_36/tests/effect.c -@@ -3886,6 +3886,65 @@ static void test_effect_preshader(IDirect3DDevice9 *device) - effect->lpVtbl->Release(effect); +@@ -3983,6 +3983,65 @@ static void test_effect_preshader_ops(IDirect3DDevice9 *device) + &op_tests[i]); } +/* @@ -127,14 +127,14 @@ index c388e7d..8653e0e 100644 START_TEST(effect) { HWND wnd; -@@ -3927,6 +3986,7 @@ START_TEST(effect) - test_effect_compilation_errors(device); +@@ -4025,6 +4084,7 @@ START_TEST(effect) test_effect_states(device); test_effect_preshader(device); + test_effect_preshader_ops(device); + test_effect_technique_validation(device); count = IDirect3DDevice9_Release(device); ok(count == 0, "The device was not properly freed: refcount %u\n", count); -- -2.7.1 +2.8.0 diff --git a/patches/mscoree-Buffer_Overflow/0001-mscoree-Avoid-buffer-overflow-when-mono-print-handle.patch b/patches/mscoree-Buffer_Overflow/0001-mscoree-Avoid-buffer-overflow-when-mono-print-handle.patch deleted file mode 100644 index d5f05c72..00000000 --- a/patches/mscoree-Buffer_Overflow/0001-mscoree-Avoid-buffer-overflow-when-mono-print-handle.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 11da1a0af07594aebccad786e536a05a74888d04 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Fri, 29 Apr 2016 17:55:43 +0200 -Subject: mscoree: Avoid buffer overflow when mono print handler returns huge - string at once. - -Signed-off-by: Sebastian Lackner ---- - dlls/mscoree/metahost.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/dlls/mscoree/metahost.c b/dlls/mscoree/metahost.c -index 252740d..30b9739 100644 ---- a/dlls/mscoree/metahost.c -+++ b/dlls/mscoree/metahost.c -@@ -272,7 +272,13 @@ static void CDECL mono_shutdown_callback_fn(MonoProfiler *prof) - - static void CDECL mono_print_handler_fn(const char *string, INT is_stdout) - { -- wine_dbg_printf("%s", string); -+ const char *p; -+ for (; *string; string = p) -+ { -+ if ((p = strstr(string, "\n"))) p++; -+ else p = string + strlen(string); -+ wine_dbg_printf("%.*s", (int)(p - string), string); -+ } - } - - static HRESULT CLRRuntimeInfo_GetRuntimeHost(CLRRuntimeInfo *This, RuntimeHost **result) --- -2.8.0 - diff --git a/patches/mscoree-Buffer_Overflow/definition b/patches/mscoree-Buffer_Overflow/definition deleted file mode 100644 index 4fd31782..00000000 --- a/patches/mscoree-Buffer_Overflow/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: Avoid buffer overflow in mono print handler for large strings diff --git a/patches/ntdll-DOS_Attributes/0004-ntdll-Implement-storing-DOS-attributes-in-NtCreateFi.patch b/patches/ntdll-DOS_Attributes/0004-ntdll-Implement-storing-DOS-attributes-in-NtCreateFi.patch index 222da524..0d57e28f 100644 --- a/patches/ntdll-DOS_Attributes/0004-ntdll-Implement-storing-DOS-attributes-in-NtCreateFi.patch +++ b/patches/ntdll-DOS_Attributes/0004-ntdll-Implement-storing-DOS-attributes-in-NtCreateFi.patch @@ -1,20 +1,20 @@ -From 119ed83d6517c6a92ff8d30f671ab4c02ebb700c Mon Sep 17 00:00:00 2001 +From 547a16f5cfaae95ca1bc3e18833132ae89b8e88e Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Wed, 20 Aug 2014 15:28:00 -0600 Subject: ntdll: Implement storing DOS attributes in NtCreateFile. --- dlls/ntdll/file.c | 76 ++++++++++++++++++++++++++++---------------- - dlls/ntdll/tests/directory.c | 20 ++++++------ + dlls/ntdll/tests/directory.c | 24 +++++++------- include/wine/port.h | 2 ++ libs/port/xattr.c | 20 ++++++++++++ - 4 files changed, 80 insertions(+), 38 deletions(-) + 4 files changed, 82 insertions(+), 40 deletions(-) diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c -index bcedc42..9b54854 100644 +index 37446a9..0b33acd 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c -@@ -219,6 +219,21 @@ int get_file_info( const char *path, struct stat *st, ULONG *attr ) +@@ -224,6 +224,21 @@ int get_file_info( const char *path, struct stat *st, ULONG *attr ) return ret; } @@ -36,7 +36,7 @@ index bcedc42..9b54854 100644 /************************************************************************** * FILE_CreateFile (internal) * Open a file. -@@ -230,6 +245,10 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT +@@ -235,6 +250,10 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT ULONG attributes, ULONG sharing, ULONG disposition, ULONG options, PVOID ea_buffer, ULONG ea_length ) { @@ -47,7 +47,7 @@ index bcedc42..9b54854 100644 ANSI_STRING unix_name; BOOL created = FALSE; -@@ -273,37 +292,34 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT +@@ -278,37 +297,34 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT io->u.Status = STATUS_SUCCESS; } @@ -109,7 +109,7 @@ index bcedc42..9b54854 100644 if (io->u.Status == STATUS_SUCCESS) { -@@ -325,6 +341,11 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT +@@ -330,6 +346,11 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT io->Information = FILE_OVERWRITTEN; break; } @@ -121,7 +121,7 @@ index bcedc42..9b54854 100644 } else if (io->u.Status == STATUS_TOO_MANY_OPENED_FILES) { -@@ -332,6 +353,7 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT +@@ -337,6 +358,7 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT if (!once++) ERR_(winediag)( "Too many open files, ulimit -n probably needs to be increased\n" ); } @@ -130,47 +130,51 @@ index bcedc42..9b54854 100644 } diff --git a/dlls/ntdll/tests/directory.c b/dlls/ntdll/tests/directory.c -index f93c623..aa8e97f 100644 +index 431471a..e579573 100644 --- a/dlls/ntdll/tests/directory.c +++ b/dlls/ntdll/tests/directory.c -@@ -51,7 +51,6 @@ static NTSTATUS (WINAPI *pRtlWow64EnableFsRedirectionEx)( ULONG disable, ULONG * +@@ -55,7 +55,6 @@ static NTSTATUS (WINAPI *pRtlWow64EnableFsRedirectionEx)( ULONG disable, ULONG * /* The attribute sets to test */ static struct testfile_s { - BOOL todo; /* set if it doesn't work on wine yet */ BOOL attr_done; /* set if attributes were tested for this file already */ const DWORD attr; /* desired attribute */ - const char *name; /* filename to use */ -@@ -60,14 +59,14 @@ static struct testfile_s { + WCHAR name[20]; /* filename to use */ +@@ -63,16 +62,16 @@ static struct testfile_s { + const char *description; /* for error messages */ int nfound; /* How many were found (expect 1) */ - WCHAR nameW[20]; /* unicode version of name (filled in later) */ } testfiles[] = { -- { 0, 0, FILE_ATTRIBUTE_NORMAL, "longfilename.tmp", NULL, "normal" }, -- { 0, 0, FILE_ATTRIBUTE_NORMAL, "n.tmp", NULL, "normal" }, -- { 1, 0, FILE_ATTRIBUTE_HIDDEN, "h.tmp", NULL, "hidden" }, -- { 1, 0, FILE_ATTRIBUTE_SYSTEM, "s.tmp", NULL, "system" }, -- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, "d.tmp", NULL, "directory" }, -- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, ".", NULL, ". directory" }, -- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, "..", NULL, ".. directory" }, -- { 0, 0, 0, NULL } -+ { 0, FILE_ATTRIBUTE_NORMAL, "longfilename.tmp", NULL, "normal" }, -+ { 0, FILE_ATTRIBUTE_NORMAL, "n.tmp", NULL, "normal" }, -+ { 0, FILE_ATTRIBUTE_HIDDEN, "h.tmp", NULL, "hidden" }, -+ { 0, FILE_ATTRIBUTE_SYSTEM, "s.tmp", NULL, "system" }, -+ { 0, FILE_ATTRIBUTE_DIRECTORY, "d.tmp", NULL, "directory" }, -+ { 0, FILE_ATTRIBUTE_DIRECTORY, ".", NULL, ". directory" }, -+ { 0, FILE_ATTRIBUTE_DIRECTORY, "..", NULL, ".. directory" }, -+ { 0, 0, NULL } +- { 0, 0, FILE_ATTRIBUTE_NORMAL, {'l','o','n','g','f','i','l','e','n','a','m','e','.','t','m','p'}, "normal" }, +- { 0, 0, FILE_ATTRIBUTE_NORMAL, {'n','.','t','m','p',}, "normal" }, +- { 1, 0, FILE_ATTRIBUTE_HIDDEN, {'h','.','t','m','p',}, "hidden" }, +- { 1, 0, FILE_ATTRIBUTE_SYSTEM, {'s','.','t','m','p',}, "system" }, +- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, {'d','.','t','m','p',}, "directory" }, +- { 0, 0, FILE_ATTRIBUTE_NORMAL, {0xe9,'a','.','t','m','p'}, "normal" }, +- { 0, 0, FILE_ATTRIBUTE_NORMAL, {0xc9,'b','.','t','m','p'}, "normal" }, +- { 0, 0, FILE_ATTRIBUTE_NORMAL, {'e','a','.','t','m','p'}, "normal" }, +- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, {'.'}, ". directory" }, +- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, {'.','.'}, ".. directory" } ++ { 0, FILE_ATTRIBUTE_NORMAL, {'l','o','n','g','f','i','l','e','n','a','m','e','.','t','m','p'}, "normal" }, ++ { 0, FILE_ATTRIBUTE_NORMAL, {'n','.','t','m','p',}, "normal" }, ++ { 0, FILE_ATTRIBUTE_HIDDEN, {'h','.','t','m','p',}, "hidden" }, ++ { 0, FILE_ATTRIBUTE_SYSTEM, {'s','.','t','m','p',}, "system" }, ++ { 0, FILE_ATTRIBUTE_DIRECTORY, {'d','.','t','m','p',}, "directory" }, ++ { 0, FILE_ATTRIBUTE_NORMAL, {0xe9,'a','.','t','m','p'}, "normal" }, ++ { 0, FILE_ATTRIBUTE_NORMAL, {0xc9,'b','.','t','m','p'}, "normal" }, ++ { 0, FILE_ATTRIBUTE_NORMAL, {'e','a','.','t','m','p'}, "normal" }, ++ { 0, FILE_ATTRIBUTE_DIRECTORY, {'.'}, ". directory" }, ++ { 0, FILE_ATTRIBUTE_DIRECTORY, {'.','.'}, ".. directory" } }; - static const int max_test_dir_size = 20; /* size of above plus some for .. etc */ - -@@ -148,8 +147,7 @@ static void tally_test_file(FILE_BOTH_DIRECTORY_INFORMATION *dir_info) - if (namelen != len || memcmp(nameW, testfiles[i].nameW, len*sizeof(WCHAR))) + static const int test_dir_count = sizeof(testfiles) / sizeof(testfiles[0]); + static const int max_test_dir_size = sizeof(testfiles) / sizeof(testfiles[0]) + 5; /* size of above plus some for .. etc */ +@@ -162,8 +161,7 @@ static void tally_test_file(FILE_BOTH_DIRECTORY_INFORMATION *dir_info) + if (namelen != len || memcmp(nameW, testfiles[i].name, len*sizeof(WCHAR))) continue; if (!testfiles[i].attr_done) { - todo_wine_if (testfiles[i].todo) -- ok (attrib == (testfiles[i].attr & attribmask), "file %s: expected %s (%x), got %x (is your linux new enough?)\n", testfiles[i].name, testfiles[i].description, testfiles[i].attr, attrib); -+ ok (attrib == (testfiles[i].attr & attribmask), "file %s: expected %s (%x), got %x (is your linux new enough?)\n", testfiles[i].name, testfiles[i].description, testfiles[i].attr, attrib); +- ok (attrib == (testfiles[i].attr & attribmask), "file %s: expected %s (%x), got %x (is your linux new enough?)\n", wine_dbgstr_w(testfiles[i].name), testfiles[i].description, testfiles[i].attr, attrib); ++ ok (attrib == (testfiles[i].attr & attribmask), "file %s: expected %s (%x), got %x (is your linux new enough?)\n", wine_dbgstr_w(testfiles[i].name), testfiles[i].description, testfiles[i].attr, attrib); testfiles[i].attr_done = TRUE; } testfiles[i].nfound++; @@ -216,5 +220,5 @@ index 6918c99..683e7a6 100644 +#endif +} -- -2.7.1 +2.8.0 diff --git a/patches/ntdll-DOS_Attributes/0007-ntdll-Perform-the-Unix-style-hidden-file-check-withi.patch b/patches/ntdll-DOS_Attributes/0007-ntdll-Perform-the-Unix-style-hidden-file-check-withi.patch index a12192d0..058a97d3 100644 --- a/patches/ntdll-DOS_Attributes/0007-ntdll-Perform-the-Unix-style-hidden-file-check-withi.patch +++ b/patches/ntdll-DOS_Attributes/0007-ntdll-Perform-the-Unix-style-hidden-file-check-withi.patch @@ -1,4 +1,4 @@ -From 866f4f12b34e5dfdf24da8074c5d9d4aa7a7f77a Mon Sep 17 00:00:00 2001 +From 80ea1e2a8dacb2ca57549236efb236669cc9153f Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Wed, 20 Aug 2014 11:26:48 -0600 Subject: ntdll: Perform the Unix-style hidden file check within the unified @@ -11,10 +11,10 @@ Subject: ntdll: Perform the Unix-style hidden file check within the unified 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c -index 41e7115..3975612 100644 +index 223b842..8b13cdc 100644 --- a/dlls/ntdll/directory.c +++ b/dlls/ntdll/directory.c -@@ -1209,17 +1209,17 @@ static DWORD WINAPI init_options( RTL_RUN_ONCE *once, void *param, void **contex +@@ -1306,17 +1306,17 @@ static DWORD WINAPI init_options( RTL_RUN_ONCE *once, void *param, void **contex * * Check if the specified file should be hidden based on its name and the show dot files option. */ @@ -37,16 +37,16 @@ index 41e7115..3975612 100644 if (p == end || *p != '.') return FALSE; /* make sure it isn't '.' or '..' */ if (p + 1 == end) return FALSE; -@@ -1434,9 +1434,6 @@ static union file_directory_info *append_entry( void *info_ptr, IO_STATUS_BLOCK - TRACE( "ignoring file %s\n", long_name ); - return NULL; +@@ -1548,9 +1548,6 @@ static NTSTATUS get_dir_data_entry( struct dir_data *dir_data, void *info_ptr, I + TRACE( "ignoring file %s\n", names->unix_name ); + return STATUS_SUCCESS; } -- if (!show_dot_files && long_name[0] == '.' && long_name[1] && (long_name[1] != '.' || long_name[2])) +- if (!show_dot_files && names->long_name[0] == '.' && names->long_name[1] && +- (names->long_name[1] != '.' || names->long_name[2])) - attributes |= FILE_ATTRIBUTE_HIDDEN; -- - total_len = dir_info_size( class, long_len ); - if (io->Information + total_len > max_length) - { + + if (st.st_dev != dir_data->id.dev) st.st_ino = 0; /* ignore inode if on a different device */ + diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index 0b33acd..24c66bc 100644 --- a/dlls/ntdll/file.c diff --git a/patches/ntdll-FileNamesInformation/0001-ntdll-Implement-FileNamesInformation-class-support.patch b/patches/ntdll-FileNamesInformation/0001-ntdll-Implement-FileNamesInformation-class-support.patch index c8451695..7afce509 100644 --- a/patches/ntdll-FileNamesInformation/0001-ntdll-Implement-FileNamesInformation-class-support.patch +++ b/patches/ntdll-FileNamesInformation/0001-ntdll-Implement-FileNamesInformation-class-support.patch @@ -1,51 +1,50 @@ -From 27f64eefe26b79cf7f0a0c6bc640509f759aad91 Mon Sep 17 00:00:00 2001 +From 1332e777815c624db046e5e9ece93a789ff72870 Mon Sep 17 00:00:00 2001 From: Qian Hong Date: Thu, 22 Oct 2015 15:54:30 +0800 Subject: ntdll: Implement FileNamesInformation class support. --- - dlls/ntdll/directory.c | 9 +++++++++ - 1 file changed, 9 insertions(+) + dlls/ntdll/directory.c | 8 ++++++++ + 1 file changed, 8 insertions(+) diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c -index f7fa951..30e7d1d 100644 +index 223b842..2b54e14 100644 --- a/dlls/ntdll/directory.c +++ b/dlls/ntdll/directory.c -@@ -178,6 +178,7 @@ union file_directory_info +@@ -159,6 +159,7 @@ union file_directory_info FILE_FULL_DIRECTORY_INFORMATION full; FILE_ID_BOTH_DIRECTORY_INFORMATION id_both; FILE_ID_FULL_DIRECTORY_INFORMATION id_full; + FILE_NAMES_INFORMATION names; }; - struct dir_data -@@ -271,6 +272,8 @@ static inline unsigned int dir_info_size( FILE_INFORMATION_CLASS class, unsigned - return (FIELD_OFFSET( FILE_ID_BOTH_DIRECTORY_INFORMATION, FileName[len] ) + 7) & ~7; + struct dir_data_buffer +@@ -277,6 +278,8 @@ static inline unsigned int dir_info_size( FILE_INFORMATION_CLASS class, unsigned + return offsetof( FILE_ID_BOTH_DIRECTORY_INFORMATION, FileName[len] ); case FileIdFullDirectoryInformation: - return (FIELD_OFFSET( FILE_ID_FULL_DIRECTORY_INFORMATION, FileName[len] ) + 7) & ~7; + return offsetof( FILE_ID_FULL_DIRECTORY_INFORMATION, FileName[len] ); + case FileNamesInformation: -+ return (FIELD_OFFSET( FILE_NAMES_INFORMATION, FileName[len] ) + 7) & ~7; ++ return offsetof( FILE_NAMES_INFORMATION, FileName[len] ); default: assert(0); return 0; -@@ -1506,6 +1509,11 @@ static union file_directory_info *append_entry( struct dir_data *dir_data, void - filename = info->id_both.FileName; +@@ -1600,6 +1603,10 @@ static NTSTATUS get_dir_data_entry( struct dir_data *dir_data, void *info_ptr, I + info->id_both.FileNameLength = name_len; break; + case FileNamesInformation: -+ info->names.FileNameLength = long_len * sizeof(WCHAR); -+ filename = info->names.FileName; ++ info->names.FileNameLength = name_len; + break; + default: assert(0); - return NULL; -@@ -2356,6 +2364,7 @@ NTSTATUS WINAPI NtQueryDirectoryFile( HANDLE handle, HANDLE event, + return 0; +@@ -1990,6 +1997,7 @@ NTSTATUS WINAPI NtQueryDirectoryFile( HANDLE handle, HANDLE event, case FileFullDirectoryInformation: case FileIdBothDirectoryInformation: case FileIdFullDirectoryInformation: + case FileNamesInformation: - if (length < dir_info_size( info_class, 1 )) return STATUS_INFO_LENGTH_MISMATCH; + if (length < dir_info_align( dir_info_size( info_class, 1 ))) return STATUS_INFO_LENGTH_MISMATCH; if (!buffer) return STATUS_ACCESS_VIOLATION; break; -- diff --git a/patches/ntdll-Fix_Free/0001-kernel32-Fix-leaking-directory-handle-in-RemoveDirec.patch b/patches/ntdll-Fix_Free/0001-kernel32-Fix-leaking-directory-handle-in-RemoveDirec.patch deleted file mode 100644 index 62cca713..00000000 --- a/patches/ntdll-Fix_Free/0001-kernel32-Fix-leaking-directory-handle-in-RemoveDirec.patch +++ /dev/null @@ -1,46 +0,0 @@ -From fbb6ccb252d14593cefa5e47a5a6566406f79c40 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Thu, 28 Aug 2014 05:36:01 +0200 -Subject: kernel32: Fix leaking directory handle in RemoveDirectoryW. (try 2) - ---- - dlls/kernel32/path.c | 17 +++++++++++------ - 1 file changed, 11 insertions(+), 6 deletions(-) - -diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c -index 09fb04b..7e20dc3 100644 ---- a/dlls/kernel32/path.c -+++ b/dlls/kernel32/path.c -@@ -1612,18 +1612,23 @@ BOOL WINAPI RemoveDirectoryW( LPCWSTR path ) - status = NtOpenFile( &handle, DELETE | SYNCHRONIZE, &attr, &io, - FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, - FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT ); -- if (status == STATUS_SUCCESS) -- status = wine_nt_to_unix_file_name( &nt_name, &unix_name, FILE_OPEN, FALSE ); -- RtlFreeUnicodeString( &nt_name ); -- - if (status != STATUS_SUCCESS) - { - SetLastError( RtlNtStatusToDosError(status) ); -+ RtlFreeUnicodeString( &nt_name ); - return FALSE; - } - -- if (!(ret = (rmdir( unix_name.Buffer ) != -1))) FILE_SetDosError(); -- RtlFreeAnsiString( &unix_name ); -+ status = wine_nt_to_unix_file_name( &nt_name, &unix_name, FILE_OPEN, FALSE ); -+ RtlFreeUnicodeString( &nt_name ); -+ -+ if (status != STATUS_SUCCESS) -+ SetLastError( RtlNtStatusToDosError(status) ); -+ else if (!(ret = (rmdir( unix_name.Buffer ) != -1))) -+ FILE_SetDosError(); -+ -+ if (status == STATUS_SUCCESS) -+ RtlFreeAnsiString( &unix_name ); - NtClose( handle ); - return ret; - } --- -1.7.9.5 - diff --git a/patches/ntdll-Fix_Free/definition b/patches/ntdll-Fix_Free/definition deleted file mode 100644 index 92e74cc9..00000000 --- a/patches/ntdll-Fix_Free/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: Fix unintentional leaks with ntdll internals diff --git a/patches/ntdll-FreeBSD_Directory/0001-ntdll-Use-POSIX-implementation-to-enumerate-director.patch b/patches/ntdll-FreeBSD_Directory/0001-ntdll-Use-POSIX-implementation-to-enumerate-director.patch deleted file mode 100644 index aba4f956..00000000 --- a/patches/ntdll-FreeBSD_Directory/0001-ntdll-Use-POSIX-implementation-to-enumerate-director.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 095360e2e7faec0135c0f7256c683cd28691f05a Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sun, 10 May 2015 02:23:46 +0200 -Subject: ntdll: Use POSIX implementation to enumerate directory content. - ---- - dlls/ntdll/directory.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c -index cbfc022..82244d5 100644 ---- a/dlls/ntdll/directory.c -+++ b/dlls/ntdll/directory.c -@@ -23,6 +23,12 @@ - #include "config.h" - #include "wine/port.h" - -+/* The FreeBSD implementation to enumerate directory content is completely -+ * broken, which causes test failures in kernel32/file and ntdll/directory -+ * tests, and also causes bug 35397. Fallback to the POSIX implementation -+ * until this issue is fixed. */ -+#undef HAVE_GETDIRENTRIES -+ - #include - #include - #ifdef HAVE_DIRENT_H --- -2.4.0 - diff --git a/patches/ntdll-FreeBSD_Directory/definition b/patches/ntdll-FreeBSD_Directory/definition deleted file mode 100644 index 12da3f0d..00000000 --- a/patches/ntdll-FreeBSD_Directory/definition +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: [35397] Use POSIX implementation to enumerate directory content on FreeBSD -Category: stable diff --git a/patches/ntdll-Junction_Points/0005-kernel32-ntdll-Add-support-for-deleting-junction-poi.patch b/patches/ntdll-Junction_Points/0005-kernel32-ntdll-Add-support-for-deleting-junction-poi.patch index da8fa48b..aa56b408 100644 --- a/patches/ntdll-Junction_Points/0005-kernel32-ntdll-Add-support-for-deleting-junction-poi.patch +++ b/patches/ntdll-Junction_Points/0005-kernel32-ntdll-Add-support-for-deleting-junction-poi.patch @@ -1,16 +1,16 @@ -From 63ede7d3be89603d63c228072c6c3fe7a50ea3e8 Mon Sep 17 00:00:00 2001 +From b4d6d566795a8fd35176414297a58dc6596900eb Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Thu, 16 Jan 2014 21:02:11 -0700 Subject: kernel32,ntdll: Add support for deleting junction points with RemoveDirectory. --- - dlls/kernel32/path.c | 21 ++++++++++++++------- + dlls/kernel32/path.c | 13 +++++++++++-- dlls/ntdll/tests/file.c | 34 +++++++++++++++++++++++++++++++++- - 2 files changed, 47 insertions(+), 8 deletions(-) + 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c -index 5847a84..58a4c38 100644 +index 620401d..11711b3 100644 --- a/dlls/kernel32/path.c +++ b/dlls/kernel32/path.c @@ -1630,6 +1630,7 @@ BOOL WINAPI CreateDirectoryExW( LPCWSTR template, LPCWSTR path, LPSECURITY_ATTRI @@ -21,35 +21,32 @@ index 5847a84..58a4c38 100644 OBJECT_ATTRIBUTES attr; UNICODE_STRING nt_name; ANSI_STRING unix_name; -@@ -1663,15 +1664,21 @@ BOOL WINAPI RemoveDirectoryW( LPCWSTR path ) +@@ -1663,15 +1664,23 @@ BOOL WINAPI RemoveDirectoryW( LPCWSTR path ) } status = wine_nt_to_unix_file_name( &nt_name, &unix_name, FILE_OPEN, FALSE ); - RtlFreeUnicodeString( &nt_name ); -- -- if (status != STATUS_SUCCESS) -- SetLastError( RtlNtStatusToDosError(status) ); -- else if (!(ret = (rmdir( unix_name.Buffer ) != -1))) -- FILE_SetDosError(); -- - if (status == STATUS_SUCCESS) -+ { -+ status = NtQueryAttributesFile( &attr, &info ); -+ if (status == STATUS_SUCCESS && (info.FileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) && -+ (info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY)) -+ ret = (unlink( unix_name.Buffer ) != -1); -+ else -+ ret = (rmdir( unix_name.Buffer ) != -1); -+ if (!ret) FILE_SetDosError(); - RtlFreeAnsiString( &unix_name ); -+ } + if (status != STATUS_SUCCESS) + { + SetLastError( RtlNtStatusToDosError(status) ); ++ RtlFreeUnicodeString( &nt_name ); + NtClose( handle ); + return FALSE; + } + +- if (!(ret = (rmdir( unix_name.Buffer ) != -1))) FILE_SetDosError(); ++ status = NtQueryAttributesFile( &attr, &info ); ++ if (status == STATUS_SUCCESS && (info.FileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) && ++ (info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY)) ++ ret = (unlink( unix_name.Buffer ) != -1); + else -+ SetLastError( RtlNtStatusToDosError(status) ); -+ RtlFreeUnicodeString( &nt_name ); ++ ret = (rmdir( unix_name.Buffer ) != -1); ++ if (!ret) FILE_SetDosError(); + ++ RtlFreeUnicodeString( &nt_name ); + RtlFreeAnsiString( &unix_name ); NtClose( handle ); return ret; - } diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c index 174d48a..f7b7d48 100644 --- a/dlls/ntdll/tests/file.c @@ -103,5 +100,5 @@ index 174d48a..f7b7d48 100644 /* Cleanup */ pRtlFreeUnicodeString( &nameW ); -- -2.7.1 +2.8.0 diff --git a/patches/ntdll-Junction_Points/definition b/patches/ntdll-Junction_Points/definition index e289dfd2..3f6031ea 100644 --- a/patches/ntdll-Junction_Points/definition +++ b/patches/ntdll-Junction_Points/definition @@ -1,3 +1,2 @@ Fixes: [12401] Support for Junction Points -Depends: ntdll-Fix_Free Depends: ntdll-NtQueryEaFile diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 2474d14c..97840df5 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "bd2999db92e63f3aa8b48945503c616c28726842" + echo "9eaa37249948c4d77df37cf3649ad1db59412fcb" } # Show version information @@ -87,7 +87,6 @@ patch_enable_all () enable_Staging="$1" enable_advapi32_LsaLookupSids="$1" enable_advapi32_SetSecurityInfo="$1" - enable_amstream_GetMultiMediaStream="$1" enable_api_ms_win_Stub_DLLs="$1" enable_avifil32_AVIFile_Proxies="$1" enable_avifil32_IGetFrame_fnSetFormat="$1" @@ -186,7 +185,6 @@ patch_enable_all () enable_mmsystem_dll16_MIDIHDR_Refcount="$1" enable_mountmgr_DosDevices="$1" enable_mpr_WNetGetUniversalNameW="$1" - enable_mscoree_Buffer_Overflow="$1" enable_mscoree_CorValidateImage="$1" enable_mshtml_HTMLLocation_put_hash="$1" enable_msidb_Implementation="$1" @@ -210,8 +208,6 @@ patch_enable_all () enable_ntdll_FileFsVolumeInformation="$1" enable_ntdll_FileNamesInformation="$1" enable_ntdll_Fix_Alignment="$1" - enable_ntdll_Fix_Free="$1" - enable_ntdll_FreeBSD_Directory="$1" enable_ntdll_Heap_FreeLists="$1" enable_ntdll_Hide_Wine_Exports="$1" enable_ntdll_Junction_Points="$1" @@ -262,7 +258,6 @@ patch_enable_all () enable_openal32_EFX_Extension="$1" enable_opengl32_Revert_Disable_Ext="$1" enable_opengl32_glDebugMessageCallback="$1" - enable_quartz_AsyncReader="$1" enable_quartz_MediaSeeking_Positions="$1" enable_quartz_Silence_FIXMEs="$1" enable_rasapi32_RasEnumDevicesA="$1" @@ -426,9 +421,6 @@ patch_enable () advapi32-SetSecurityInfo) enable_advapi32_SetSecurityInfo="$2" ;; - amstream-GetMultiMediaStream) - enable_amstream_GetMultiMediaStream="$2" - ;; api-ms-win-Stub_DLLs) enable_api_ms_win_Stub_DLLs="$2" ;; @@ -726,9 +718,6 @@ patch_enable () mpr-WNetGetUniversalNameW) enable_mpr_WNetGetUniversalNameW="$2" ;; - mscoree-Buffer_Overflow) - enable_mscoree_Buffer_Overflow="$2" - ;; mscoree-CorValidateImage) enable_mscoree_CorValidateImage="$2" ;; @@ -798,12 +787,6 @@ patch_enable () ntdll-Fix_Alignment) enable_ntdll_Fix_Alignment="$2" ;; - ntdll-Fix_Free) - enable_ntdll_Fix_Free="$2" - ;; - ntdll-FreeBSD_Directory) - enable_ntdll_FreeBSD_Directory="$2" - ;; ntdll-Heap_FreeLists) enable_ntdll_Heap_FreeLists="$2" ;; @@ -954,9 +937,6 @@ patch_enable () opengl32-glDebugMessageCallback) enable_opengl32_glDebugMessageCallback="$2" ;; - quartz-AsyncReader) - enable_quartz_AsyncReader="$2" - ;; quartz-MediaSeeking_Positions) enable_quartz_MediaSeeking_Positions="$2" ;; @@ -1799,9 +1779,6 @@ if test "$enable_category_stable" -eq 1; then if test "$enable_ntdll_Fix_Alignment" -gt 1; then abort "Patchset ntdll-Fix_Alignment disabled, but category-stable depends on that." fi - if test "$enable_ntdll_FreeBSD_Directory" -gt 1; then - abort "Patchset ntdll-FreeBSD_Directory disabled, but category-stable depends on that." - fi if test "$enable_ntdll_Heap_FreeLists" -gt 1; then abort "Patchset ntdll-Heap_FreeLists disabled, but category-stable depends on that." fi @@ -1912,7 +1889,6 @@ if test "$enable_category_stable" -eq 1; then enable_ntdll_DllRedirects=1 enable_ntdll_FileFsFullSizeInformation=1 enable_ntdll_Fix_Alignment=1 - enable_ntdll_FreeBSD_Directory=1 enable_ntdll_Heap_FreeLists=1 enable_ntdll_Pipe_SpecialCharacters=1 enable_ntdll_RtlIpStringToAddress_Tests=1 @@ -2140,13 +2116,9 @@ if test "$enable_ntdll_Purist_Mode" -eq 1; then fi if test "$enable_ntdll_Junction_Points" -eq 1; then - if test "$enable_ntdll_Fix_Free" -gt 1; then - abort "Patchset ntdll-Fix_Free disabled, but ntdll-Junction_Points depends on that." - fi if test "$enable_ntdll_NtQueryEaFile" -gt 1; then abort "Patchset ntdll-NtQueryEaFile disabled, but ntdll-Junction_Points depends on that." fi - enable_ntdll_Fix_Free=1 enable_ntdll_NtQueryEaFile=1 fi @@ -2474,21 +2446,6 @@ if test "$enable_advapi32_SetSecurityInfo" -eq 1; then ) >> "$patchlist" fi -# Patchset amstream-GetMultiMediaStream -# | -# | This patchset fixes the following Wine bugs: -# | * [#37090] Implement AMStream GetMultiMediaStream functions -# | -# | Modified files: -# | * dlls/amstream/mediastream.c -# | -if test "$enable_amstream_GetMultiMediaStream" -eq 1; then - patch_apply amstream-GetMultiMediaStream/0001-amstream-Implement-IAMMediaStream-GetMultiMediaStrea.patch - ( - echo '+ { "Michael Müller", "amstream: Implement IAMMediaStream::GetMultiMediaStream.", 1 },'; - ) >> "$patchlist" -fi - # Patchset combase-RoApi # | # | Modified files: @@ -4335,18 +4292,6 @@ if test "$enable_mpr_WNetGetUniversalNameW" -eq 1; then ) >> "$patchlist" fi -# Patchset mscoree-Buffer_Overflow -# | -# | Modified files: -# | * dlls/mscoree/metahost.c -# | -if test "$enable_mscoree_Buffer_Overflow" -eq 1; then - patch_apply mscoree-Buffer_Overflow/0001-mscoree-Avoid-buffer-overflow-when-mono-print-handle.patch - ( - echo '+ { "Sebastian Lackner", "mscoree: Avoid buffer overflow when mono print handler returns huge string at once.", 1 },'; - ) >> "$patchlist" -fi - # Patchset mscoree-CorValidateImage # | # | This patchset fixes the following Wine bugs: @@ -4732,33 +4677,6 @@ if test "$enable_ntdll_Fix_Alignment" -eq 1; then ) >> "$patchlist" fi -# Patchset ntdll-Fix_Free -# | -# | Modified files: -# | * dlls/kernel32/path.c -# | -if test "$enable_ntdll_Fix_Free" -eq 1; then - patch_apply ntdll-Fix_Free/0001-kernel32-Fix-leaking-directory-handle-in-RemoveDirec.patch - ( - echo '+ { "Sebastian Lackner", "kernel32: Fix leaking directory handle in RemoveDirectoryW.", 2 },'; - ) >> "$patchlist" -fi - -# Patchset ntdll-FreeBSD_Directory -# | -# | This patchset fixes the following Wine bugs: -# | * [#35397] Use POSIX implementation to enumerate directory content on FreeBSD -# | -# | Modified files: -# | * dlls/ntdll/directory.c -# | -if test "$enable_ntdll_FreeBSD_Directory" -eq 1; then - patch_apply ntdll-FreeBSD_Directory/0001-ntdll-Use-POSIX-implementation-to-enumerate-director.patch - ( - echo '+ { "Sebastian Lackner", "ntdll: Use POSIX implementation to enumerate directory content.", 1 },'; - ) >> "$patchlist" -fi - # Patchset ntdll-Heap_FreeLists # | # | Modified files: @@ -4801,7 +4719,7 @@ fi # Patchset ntdll-Junction_Points # | # | This patchset has the following (direct or indirect) dependencies: -# | * ntdll-Fix_Free, ntdll-NtQueryEaFile +# | * ntdll-NtQueryEaFile # | # | This patchset fixes the following Wine bugs: # | * [#12401] Support for Junction Points @@ -5628,18 +5546,6 @@ if test "$enable_opengl32_glDebugMessageCallback" -eq 1; then ) >> "$patchlist" fi -# Patchset quartz-AsyncReader -# | -# | Modified files: -# | * dlls/quartz/filesource.c -# | -if test "$enable_quartz_AsyncReader" -eq 1; then - patch_apply quartz-AsyncReader/0001-quartz-AsyncReader-should-return-NULL-as-media-subty.patch - ( - echo '+ { "Michael Müller", "quartz: AsyncReader should return NULL as media subtype for unknown formats instead of failing.", 1 },'; - ) >> "$patchlist" -fi - # Patchset quartz-MediaSeeking_Positions # | # | Modified files: diff --git a/patches/quartz-AsyncReader/0001-quartz-AsyncReader-should-return-NULL-as-media-subty.patch b/patches/quartz-AsyncReader/0001-quartz-AsyncReader-should-return-NULL-as-media-subty.patch deleted file mode 100644 index 328ce625..00000000 --- a/patches/quartz-AsyncReader/0001-quartz-AsyncReader-should-return-NULL-as-media-subty.patch +++ /dev/null @@ -1,29 +0,0 @@ -From db3178f4292558456596cc31766480638d8a0f3a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Sun, 7 Feb 2016 01:30:22 +0100 -Subject: quartz: AsyncReader should return NULL as media subtype for unknown - formats instead of failing. - ---- - dlls/quartz/filesource.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/dlls/quartz/filesource.c b/dlls/quartz/filesource.c -index 33ac442..a62db2c 100644 ---- a/dlls/quartz/filesource.c -+++ b/dlls/quartz/filesource.c -@@ -652,8 +652,9 @@ static HRESULT WINAPI FileSource_Load(IFileSourceFilter * iface, LPCOLESTR pszFi - hr = GetClassMediaFile(pReader, pszFileName, &This->pmt->majortype, &This->pmt->subtype, NULL); - if (FAILED(hr)) - { -- CoTaskMemFree(This->pmt); -- This->pmt = NULL; -+ memcpy(&This->pmt->majortype, &MEDIATYPE_Stream, sizeof(GUID)); -+ memcpy(&This->pmt->subtype, &MEDIASUBTYPE_NULL, sizeof(GUID)); -+ hr = S_OK; - } - } - else --- -2.7.0 -