diff --git a/patches/avifile.dll16-AVIStreamGetFrame/0001-avifile-Correctly-convert-result-of-AVIStreamGetFram.patch b/patches/avifile.dll16-AVIStreamGetFrame/0001-avifile-Correctly-convert-result-of-AVIStreamGetFram.patch index 19b4459f..f015597b 100644 --- a/patches/avifile.dll16-AVIStreamGetFrame/0001-avifile-Correctly-convert-result-of-AVIStreamGetFram.patch +++ b/patches/avifile.dll16-AVIStreamGetFrame/0001-avifile-Correctly-convert-result-of-AVIStreamGetFram.patch @@ -1,13 +1,14 @@ -From e68b9f65a4f9c7f9c10b11152cac04bcdf6facf9 Mon Sep 17 00:00:00 2001 +From ef9a368177cf6f1a1ca7f99fd3ae0b8b6918160a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 8 Feb 2016 04:44:24 +0100 -Subject: avifile.dll16: Correctly convert result of AVIStreamGetFrame to a segptr. +Subject: avifile.dll16: Correctly convert result of AVIStreamGetFrame to a + segptr. --- dlls/avifile.dll16/Makefile.in | 3 + dlls/avifile.dll16/avifile.dll16.spec | 6 +- - dlls/avifile.dll16/main.c | 137 ++++++++++++++++++++++++++++++++++ - 3 files changed, 143 insertions(+), 3 deletions(-) + dlls/avifile.dll16/main.c | 133 ++++++++++++++++++++++++++++++++++ + 3 files changed, 139 insertions(+), 3 deletions(-) create mode 100644 dlls/avifile.dll16/main.c diff --git a/dlls/avifile.dll16/Makefile.in b/dlls/avifile.dll16/Makefile.in @@ -40,10 +41,10 @@ index 71a6c74..0e19413 100644 122 stub AVISAVEOPTIONS diff --git a/dlls/avifile.dll16/main.c b/dlls/avifile.dll16/main.c new file mode 100644 -index 0000000..f780c43 +index 0000000..9e1faac --- /dev/null +++ b/dlls/avifile.dll16/main.c -@@ -0,0 +1,137 @@ +@@ -0,0 +1,133 @@ +/* + * Wrapper for 16 bit avifile functions + * @@ -69,10 +70,6 @@ index 0000000..f780c43 +#include "wingdi.h" +#include "vfw.h" + -+#include "wine/debug.h" -+ -+WINE_DEFAULT_DEBUG_CHANNEL(avifile16); -+ +struct frame_wrapper16 +{ + PGETFRAME pg; @@ -182,5 +179,5 @@ index 0000000..f780c43 + return hr; +} -- -2.7.0 +2.9.0 diff --git a/patches/avifile.dll16-AVIStreamGetFrame/0002-avifile-Convert-between-AVISTREAMINFO-16-bit-and-AVI.patch b/patches/avifile.dll16-AVIStreamGetFrame/0002-avifile-Convert-between-AVISTREAMINFO-16-bit-and-AVI.patch index add72a7e..d545e3ff 100644 --- a/patches/avifile.dll16-AVIStreamGetFrame/0002-avifile-Convert-between-AVISTREAMINFO-16-bit-and-AVI.patch +++ b/patches/avifile.dll16-AVIStreamGetFrame/0002-avifile-Convert-between-AVISTREAMINFO-16-bit-and-AVI.patch @@ -1,7 +1,8 @@ -From 3cdd530b2c17ee0cdc6a1fcc37b28c180310656a Mon Sep 17 00:00:00 2001 +From b64fdb26c0d998e97f8d4d5193108d92bd0ee0dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 8 Feb 2016 14:02:09 +0100 -Subject: avifile.dll16: Convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA. +Subject: avifile.dll16: Convert between AVISTREAMINFO (16 bit) and + AVISTREAMINFOA. --- dlls/avifile.dll16/avifile.dll16.spec | 4 +- @@ -29,12 +30,12 @@ index 0e19413..7a1aaea 100644 164 pascal AVIStreamReadFormat(long long ptr ptr) AVIStreamReadFormat 165 pascal AVIStreamReadData(long long ptr ptr) AVIStreamReadData diff --git a/dlls/avifile.dll16/main.c b/dlls/avifile.dll16/main.c -index f780c43..8df1fe5 100644 +index 9e1faac..8bb1769 100644 --- a/dlls/avifile.dll16/main.c +++ b/dlls/avifile.dll16/main.c -@@ -27,6 +27,27 @@ - - WINE_DEFAULT_DEBUG_CHANNEL(avifile16); +@@ -23,6 +23,27 @@ + #include "wingdi.h" + #include "vfw.h" +typedef struct _AVISTREAMINFO16 { + DWORD fccType; @@ -60,7 +61,7 @@ index f780c43..8df1fe5 100644 struct frame_wrapper16 { PGETFRAME pg; -@@ -135,3 +156,82 @@ HRESULT WINAPI AVIStreamGetFrameClose16(PGETFRAME pg) +@@ -131,3 +152,82 @@ HRESULT WINAPI AVIStreamGetFrameClose16(PGETFRAME pg) HeapFree(GetProcessHeap(), 0, wrapper); return hr; } @@ -144,5 +145,5 @@ index f780c43..8df1fe5 100644 + return hr; +} -- -2.7.0 +2.9.0 diff --git a/patches/mmsystem.dll16-MIDIHDR_Refcount/0001-mmsystem.dll16-Refcount-midihdr-to-work-around-buggy.patch b/patches/mmsystem.dll16-MIDIHDR_Refcount/0001-mmsystem.dll16-Refcount-midihdr-to-work-around-buggy.patch index 2f190a73..c04124c3 100644 --- a/patches/mmsystem.dll16-MIDIHDR_Refcount/0001-mmsystem.dll16-Refcount-midihdr-to-work-around-buggy.patch +++ b/patches/mmsystem.dll16-MIDIHDR_Refcount/0001-mmsystem.dll16-Refcount-midihdr-to-work-around-buggy.patch @@ -1,15 +1,15 @@ -From eda32948987d81c0df777fbe997b2ce8eaa4cbd1 Mon Sep 17 00:00:00 2001 +From 5467b7a82f16dfb7cbd6de4badcd107e7ec5f292 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Fri, 26 Feb 2016 03:54:28 +0100 Subject: mmsystem.dll16: Refcount midihdr to work around buggy application which unprepares buffer during a callback. --- - dlls/mmsystem.dll16/message16.c | 121 ++++++++++++++++++++++++---------------- - 1 file changed, 73 insertions(+), 48 deletions(-) + dlls/mmsystem.dll16/message16.c | 123 ++++++++++++++++++++++++---------------- + 1 file changed, 74 insertions(+), 49 deletions(-) diff --git a/dlls/mmsystem.dll16/message16.c b/dlls/mmsystem.dll16/message16.c -index 012d3dc..26e47b2 100644 +index 012d3dc..2c01eb4 100644 --- a/dlls/mmsystem.dll16/message16.c +++ b/dlls/mmsystem.dll16/message16.c @@ -33,6 +33,13 @@ @@ -46,7 +46,7 @@ index 012d3dc..26e47b2 100644 } break; default: -@@ -175,41 +182,48 @@ static MMSYSTEM_MapType MMSYSTDRV_MidiOut_Map16To32W (UINT wMsg, DWORD_PTR* lpP +@@ -175,42 +182,49 @@ static MMSYSTEM_MapType MMSYSTDRV_MidiOut_Map16To32W (UINT wMsg, DWORD_PTR* lpP break; case MODM_PREPARE: { @@ -97,7 +97,16 @@ index 012d3dc..26e47b2 100644 - LPMIDIHDR mh32 = (MIDIHDR*)mh16->lpNext; + LPMIDIHDR16 mh16 = MapSL(*lpParam1); + struct mihdrWrap *mh32 = (struct mihdrWrap*)mh16->lpNext; -+ + +- *lpParam1 = (DWORD)mh32; +- *lpParam2 = offsetof(MIDIHDR,dwOffset); +- /* dwBufferLength can be reduced between prepare & write */ +- if (wMsg == MODM_LONGDATA && mh32->dwBufferLength < mh16->dwBufferLength) { +- ERR("Size of buffer has been increased from %d to %d, keeping initial value\n", +- mh32->dwBufferLength, mh16->dwBufferLength); +- } else +- mh32->dwBufferLength = mh16->dwBufferLength; +- ret = MMSYSTEM_MAP_OKMEM; + mh32->ref++; + + *lpParam1 = (DWORD)&mh32->hdr; @@ -111,18 +120,11 @@ index 012d3dc..26e47b2 100644 + } + else + mh32->hdr.dwBufferLength = mh16->dwBufferLength; - -- *lpParam1 = (DWORD)mh32; -- *lpParam2 = offsetof(MIDIHDR,dwOffset); -- /* dwBufferLength can be reduced between prepare & write */ -- if (wMsg == MODM_LONGDATA && mh32->dwBufferLength < mh16->dwBufferLength) { -- ERR("Size of buffer has been increased from %d to %d, keeping initial value\n", -- mh32->dwBufferLength, mh16->dwBufferLength); -- } else -- mh32->dwBufferLength = mh16->dwBufferLength; - ret = MMSYSTEM_MAP_OKMEM; ++ ++ ret = MMSYSTEM_MAP_OKMEM; } break; + @@ -267,17 +281,28 @@ static MMSYSTEM_MapType MMSYSTDRV_MidiOut_UnMap16To32W(UINT wMsg, DWORD_PTR* lp case MODM_UNPREPARE: case MODM_LONGDATA: @@ -180,5 +182,5 @@ index 012d3dc..26e47b2 100644 break; default: -- -2.7.1 +2.9.0 diff --git a/patches/msvfw32-ICGetDisplayFormat/0001-msvfw32-Try-different-formarts-in-ICGetDisplayFormat.patch b/patches/msvfw32-ICGetDisplayFormat/0001-msvfw32-Try-different-formarts-in-ICGetDisplayFormat.patch index 6297d2c5..af744f40 100644 --- a/patches/msvfw32-ICGetDisplayFormat/0001-msvfw32-Try-different-formarts-in-ICGetDisplayFormat.patch +++ b/patches/msvfw32-ICGetDisplayFormat/0001-msvfw32-Try-different-formarts-in-ICGetDisplayFormat.patch @@ -1,18 +1,18 @@ -From 396e4a11fbc0773d9519e84ff0d77c3ff3ec6efc Mon Sep 17 00:00:00 2001 +From 595d96fdba45c66788ba83732fa7e5bfc8a5947b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 31 Mar 2016 00:58:04 +0200 Subject: msvfw32: Try different formarts in ICGetDisplayFormat. --- - dlls/msvfw32/msvideo_main.c | 88 ++++++++++++---- + dlls/msvfw32/msvideo_main.c | 90 +++++++++++++---- dlls/msvfw32/tests/msvfw.c | 240 ++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 307 insertions(+), 21 deletions(-) + 2 files changed, 308 insertions(+), 22 deletions(-) diff --git a/dlls/msvfw32/msvideo_main.c b/dlls/msvfw32/msvideo_main.c -index 4f1a2bf..28f405e 100644 +index 0ae33ed..a76828a 100644 --- a/dlls/msvfw32/msvideo_main.c +++ b/dlls/msvfw32/msvideo_main.c -@@ -719,24 +719,79 @@ HIC VFWAPI ICGetDisplayFormat( +@@ -719,25 +719,80 @@ HIC VFWAPI ICGetDisplayFormat( HIC hic,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut, INT depth,INT dx,INT dy) { @@ -64,6 +64,7 @@ index 4f1a2bf..28f405e 100644 ICSendMessage(tmphic, ICM_DECOMPRESS_GET_FORMAT, (DWORD_PTR)lpbiIn, (DWORD_PTR)lpbiOut); +- if (lpbiOut->biCompression != 0) { + lpbiOut->biSize = sizeof(BITMAPINFOHEADER); + lpbiOut->biWidth = dx; + lpbiOut->biHeight = dy; @@ -99,9 +100,10 @@ index 4f1a2bf..28f405e 100644 + if (ICSendMessage(tmphic, ICM_DECOMPRESS_GET_FORMAT, (DWORD_PTR)lpbiIn, (DWORD_PTR)lpbiOut)) + goto errout; + - if (lpbiOut->biCompression != 0) { ++ if (lpbiOut->biCompression != 0) { FIXME("Ooch, how come decompressor outputs compressed data (%d)??\n", lpbiOut->biCompression); + } @@ -746,20 +801,11 @@ HIC VFWAPI ICGetDisplayFormat( lpbiOut->biSize); lpbiOut->biSize = sizeof(*lpbiOut); @@ -380,5 +382,5 @@ index 125cac5..7fd4c43 100644 + test_ICGetDisplayFormat(); } -- -2.7.1 +2.9.0 diff --git a/patches/shell32-Icons/0001-shell32-Add-support-for-extra-large-and-jumbo-icon-l.patch b/patches/shell32-Icons/0001-shell32-Add-support-for-extra-large-and-jumbo-icon-l.patch index cd58c3e7..28a04662 100644 --- a/patches/shell32-Icons/0001-shell32-Add-support-for-extra-large-and-jumbo-icon-l.patch +++ b/patches/shell32-Icons/0001-shell32-Add-support-for-extra-large-and-jumbo-icon-l.patch @@ -1,16 +1,16 @@ -From 8fd25fe53f564ebbe2dd2a2de6ed1126c4b4ee1a Mon Sep 17 00:00:00 2001 +From a66b90e5aec80fd065815dcd31f567256ed989b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sun, 3 Aug 2014 02:23:44 +0200 Subject: shell32: Add support for extra large and jumbo icon lists. (v2) --- - dlls/shell32/iconcache.c | 203 +++++++++++++++++++++++++++++--------------- + dlls/shell32/iconcache.c | 209 ++++++++++++++++++++++++++++---------------- dlls/shell32/shell32_main.h | 3 + dlls/shell32/shellord.c | 28 ++++-- - 3 files changed, 156 insertions(+), 78 deletions(-) + 3 files changed, 159 insertions(+), 81 deletions(-) diff --git a/dlls/shell32/iconcache.c b/dlls/shell32/iconcache.c -index 4549d5b..2aff054 100644 +index c3284a2..7f33131 100644 --- a/dlls/shell32/iconcache.c +++ b/dlls/shell32/iconcache.c @@ -62,7 +62,9 @@ typedef struct @@ -217,6 +217,12 @@ index 4549d5b..2aff054 100644 - - ImageList_SetBkColor(ShellSmallIconList, CLR_NONE); - ImageList_SetBkColor(ShellBigIconList, CLR_NONE); +- +- /* Load the document icon, which is used as the default if an icon isn't found. */ +- hSm = LoadImageA(shell32_hInstance, MAKEINTRESOURCEA(IDI_SHELL_DOCUMENT), +- IMAGE_ICON, cx_small, cy_small, LR_SHARED); +- hLg = LoadImageA(shell32_hInstance, MAKEINTRESOURCEA(IDI_SHELL_DOCUMENT), +- IMAGE_ICON, cx_large, cy_large, LR_SHARED); + ShellSmallIconList = ImageList_Create( cx_small,cy_small,ILC_COLOR32|ILC_MASK,0,0x20 ); + ShellLargeIconList = ImageList_Create( cx_large,cy_large,ILC_COLOR32|ILC_MASK,0,0x20 ); + ShellExtraLargeIconList = ImageList_Create( cx_extralarge,cy_extralarge,ILC_COLOR32|ILC_MASK,0,0x20 ); @@ -242,20 +248,14 @@ index 4549d5b..2aff054 100644 + return FALSE; + } -- /* Load the document icon, which is used as the default if an icon isn't found. */ -- hSm = LoadImageA(shell32_hInstance, MAKEINTRESOURCEA(IDI_SHELL_DOCUMENT), -- IMAGE_ICON, cx_small, cy_small, LR_SHARED); -- hLg = LoadImageA(shell32_hInstance, MAKEINTRESOURCEA(IDI_SHELL_DOCUMENT), -- IMAGE_ICON, cx_large, cy_large, LR_SHARED); -+ SIC_IconAppend( swShell32Name, IDI_SHELL_DOCUMENT-1, hSm, hLg, hELg, hJb, 0 ); -+ SIC_IconAppend( swShell32Name, -IDI_SHELL_DOCUMENT, hSm, hLg, hELg, hJb, 0 ); - - if (!hSm || !hLg) - { - FIXME("Failed to load IDI_SHELL_DOCUMENT icon!\n"); - return FALSE; - } -- ++ SIC_IconAppend( swShell32Name, IDI_SHELL_DOCUMENT-1, hSm, hLg, hELg, hJb, 0 ); ++ SIC_IconAppend( swShell32Name, -IDI_SHELL_DOCUMENT, hSm, hLg, hELg, hJb, 0 ); + - SIC_IconAppend (swShell32Name, IDI_SHELL_DOCUMENT-1, hSm, hLg, 0); - SIC_IconAppend (swShell32Name, -IDI_SHELL_DOCUMENT, hSm, hLg, 0); - @@ -265,7 +265,7 @@ index 4549d5b..2aff054 100644 return TRUE; } -@@ -409,10 +457,14 @@ void SIC_Destroy(void) +@@ -409,13 +457,17 @@ void SIC_Destroy(void) if (sic_hdpa) DPA_DestroyCallback(sic_hdpa, sic_free, NULL ); @@ -273,6 +273,9 @@ index 4549d5b..2aff054 100644 - ImageList_Destroy(ShellSmallIconList); - if (ShellBigIconList) - ImageList_Destroy(ShellBigIconList); +- +- LeaveCriticalSection(&SHELL32_SicCS); +- DeleteCriticalSection(&SHELL32_SicCS); + if (ShellSmallIconList) + ImageList_Destroy( ShellSmallIconList ); + if (ShellLargeIconList) @@ -281,9 +284,12 @@ index 4549d5b..2aff054 100644 + ImageList_Destroy( ShellExtraLargeIconList ); + if (ShellJumboIconList) + ImageList_Destroy( ShellJumboIconList ); ++ ++ LeaveCriticalSection(&SHELL32_SicCS); ++ DeleteCriticalSection(&SHELL32_SicCS); + } - LeaveCriticalSection(&SHELL32_SicCS); - DeleteCriticalSection(&SHELL32_SicCS); + /***************************************************************************** @@ -529,10 +581,21 @@ BOOL WINAPI Shell_GetImageLists(HIMAGELIST * lpBigList, HIMAGELIST * lpSmallList { TRACE("(%p,%p)\n",lpBigList,lpSmallList); @@ -308,10 +314,10 @@ index 4549d5b..2aff054 100644 * PidlToSicIndex [INTERNAL] * diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h -index 492f79f..69d2c86 100644 +index 0178e10..dd680a4 100644 --- a/dlls/shell32/shell32_main.h +++ b/dlls/shell32/shell32_main.h -@@ -244,4 +244,7 @@ HRESULT get_typeinfo(enum tid_t, ITypeInfo**) DECLSPEC_HIDDEN; +@@ -245,4 +245,7 @@ HRESULT get_typeinfo(enum tid_t, ITypeInfo**) DECLSPEC_HIDDEN; void release_typelib(void) DECLSPEC_HIDDEN; void release_desktop_folder(void) DECLSPEC_HIDDEN; @@ -320,10 +326,10 @@ index 492f79f..69d2c86 100644 + #endif diff --git a/dlls/shell32/shellord.c b/dlls/shell32/shellord.c -index 914dc5a..75e5d645a 100644 +index 60492de..e04157c 100644 --- a/dlls/shell32/shellord.c +++ b/dlls/shell32/shellord.c -@@ -2182,20 +2182,32 @@ void WINAPI SHFlushSFCache(void) +@@ -2171,20 +2171,32 @@ void WINAPI SHFlushSFCache(void) */ HRESULT WINAPI SHGetImageList(int iImageList, REFIID riid, void **ppv) { @@ -365,5 +371,5 @@ index 914dc5a..75e5d645a 100644 if (hNew) { -- -2.5.0 +2.9.0 diff --git a/patches/winecfg-Staging/0001-winecfg-Add-staging-tab-for-CSMT.patch b/patches/winecfg-Staging/0001-winecfg-Add-staging-tab-for-CSMT.patch index afad1dec..868d208c 100644 --- a/patches/winecfg-Staging/0001-winecfg-Add-staging-tab-for-CSMT.patch +++ b/patches/winecfg-Staging/0001-winecfg-Add-staging-tab-for-CSMT.patch @@ -1,16 +1,16 @@ -From d88860b3dd92769f14c45c92f9640ee4a9e8efe8 Mon Sep 17 00:00:00 2001 +From d19a6f79481387bd7d65895c31fd861f1658aca9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sun, 14 Dec 2014 20:42:45 +0100 Subject: winecfg: Add staging tab for CSMT. --- programs/winecfg/Makefile.in | 1 + - programs/winecfg/main.c | 12 +++++- + programs/winecfg/main.c | 12 ++++++- programs/winecfg/resource.h | 5 +++ - programs/winecfg/staging.c | 89 ++++++++++++++++++++++++++++++++++++++++++++ + programs/winecfg/staging.c | 86 ++++++++++++++++++++++++++++++++++++++++++++ programs/winecfg/winecfg.h | 1 + - programs/winecfg/winecfg.rc | 10 +++++ - 6 files changed, 117 insertions(+), 1 deletion(-) + programs/winecfg/winecfg.rc | 10 ++++++ + 6 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 programs/winecfg/staging.c diff --git a/programs/winecfg/Makefile.in b/programs/winecfg/Makefile.in @@ -87,10 +87,10 @@ index 0c0b038..54c67c2 100644 #define IDC_ABT_ORG 8433 diff --git a/programs/winecfg/staging.c b/programs/winecfg/staging.c new file mode 100644 -index 0000000..09c0d3f +index 0000000..0aed083 --- /dev/null +++ b/programs/winecfg/staging.c -@@ -0,0 +1,89 @@ +@@ -0,0 +1,86 @@ +/* + * WineCfg Staging panel + * @@ -119,13 +119,10 @@ index 0000000..09c0d3f + +#include +#include -+#include + +#include "resource.h" +#include "winecfg.h" + -+WINE_DEFAULT_DEBUG_CHANNEL(winecfg); -+ +/* + * Command stream multithreading + */ @@ -221,5 +218,5 @@ index 72c3e1b..dedc039 100644 /* @makedep: winecfg.ico */ -- -2.7.1 +2.9.0 diff --git a/patches/wusa-MSU_Package_Installer/0004-wusa-Implement-WOW64-support.patch b/patches/wusa-MSU_Package_Installer/0004-wusa-Implement-WOW64-support.patch index 57ea4895..60d1ee94 100644 --- a/patches/wusa-MSU_Package_Installer/0004-wusa-Implement-WOW64-support.patch +++ b/patches/wusa-MSU_Package_Installer/0004-wusa-Implement-WOW64-support.patch @@ -1,27 +1,30 @@ -From 3bd8282421aad38c45c38d2f3510c46560a4902d Mon Sep 17 00:00:00 2001 +From 924e4649bcc67c6b61191d6f0653c12c742e374a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 21 Dec 2015 01:47:59 +0100 Subject: wusa: Implement WOW64 support. --- - programs/wusa/main.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 58 insertions(+), 1 deletion(-) + programs/wusa/main.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/programs/wusa/main.c b/programs/wusa/main.c -index 9cd8a2d..5dae802 100644 +index 9cd8a2d..36e0013 100644 --- a/programs/wusa/main.c +++ b/programs/wusa/main.c -@@ -66,6 +66,9 @@ struct installer_state +@@ -66,6 +66,12 @@ struct installer_state struct list updates; }; ++#if defined(__x86_64__) +static const WCHAR x86W[] = {'x','8','6',0}; ++#elif defined(__i386__) +static const WCHAR amd64W[] = {'a','m','d','6','4',0}; ++#endif + static BOOL strbuf_init(struct strbuf *buf) { buf->pos = 0; -@@ -375,6 +378,14 @@ static WCHAR *lookup_expression(struct assembly_entry *assembly, const WCHAR *ke +@@ -375,6 +381,14 @@ static WCHAR *lookup_expression(struct assembly_entry *assembly, const WCHAR *ke if (!strcmpW(key, runtime_system32)) { @@ -36,7 +39,7 @@ index 9cd8a2d..5dae802 100644 GetSystemDirectoryW(path, sizeof(path)/sizeof(path[0])); return strdupW(path); } -@@ -691,8 +702,13 @@ static BOOL install_registry(struct assembly_entry *assembly, BOOL dryrun) +@@ -691,8 +705,13 @@ static BOOL install_registry(struct assembly_entry *assembly, BOOL dryrun) struct registrykv_entry *registrykv; HKEY root, subkey; WCHAR *path; @@ -50,7 +53,7 @@ index 9cd8a2d..5dae802 100644 LIST_FOR_EACH_ENTRY(registryop, &assembly->registryops, struct registryop_entry, entry) { if (!(path = split_registry_key(registryop->key, &root))) -@@ -701,7 +717,7 @@ static BOOL install_registry(struct assembly_entry *assembly, BOOL dryrun) +@@ -701,7 +720,7 @@ static BOOL install_registry(struct assembly_entry *assembly, BOOL dryrun) break; } @@ -59,7 +62,7 @@ index 9cd8a2d..5dae802 100644 { WINE_ERR("Failed to open registry key %s\n", debugstr_w(registryop->key)); ret = FALSE; -@@ -772,6 +788,14 @@ static BOOL install_assembly(struct list *manifest_list, struct assembly_identit +@@ -772,6 +791,14 @@ static BOOL install_assembly(struct list *manifest_list, struct assembly_identit return FALSE; } @@ -74,7 +77,7 @@ index 9cd8a2d..5dae802 100644 assembly->status = ASSEMBLY_STATUS_IN_PROGRESS; LIST_FOR_EACH_ENTRY(dependency, &assembly->dependencies, struct dependency_entry, entry) -@@ -1027,6 +1051,37 @@ done: +@@ -1027,6 +1054,37 @@ done: return ret; } @@ -112,7 +115,7 @@ index 9cd8a2d..5dae802 100644 int wmain(int argc, WCHAR *argv[]) { static const WCHAR norestartW[] = {'/','n','o','r','e','s','t','a','r','t',0}; -@@ -1035,6 +1090,8 @@ int wmain(int argc, WCHAR *argv[]) +@@ -1035,6 +1093,8 @@ int wmain(int argc, WCHAR *argv[]) WCHAR *filename = NULL; int i; @@ -122,5 +125,5 @@ index 9cd8a2d..5dae802 100644 state.quiet = FALSE; -- -2.6.4 +2.9.0