Remove several patches (accepted/fixed upstream).

This commit is contained in:
Sebastian Lackner 2014-11-04 17:11:34 +01:00
parent f66b06739e
commit a691cec6e7
11 changed files with 8 additions and 527 deletions

View File

@ -96,7 +96,7 @@ Included bug fixes and improvements
* Support for D3DXGetShaderInputSemantics ([Wine Bug #22682](https://bugs.winehq.org/show_bug.cgi?id=22682))
* Support for DOS hidden/system file attributes ([Wine Bug #9158](https://bugs.winehq.org/show_bug.cgi?id=9158))
* Support for Dynamic DST (daylight saving time) information in registry
* Support for FindFirstFileExW level FindExInfoBasic ([Wine Bug #37354](https://bugs.winehq.org/show_bug.cgi?id=37354))
* ~~Support for FindFirstFileExW level FindExInfoBasic~~ ([Wine Bug #37354](https://bugs.winehq.org/show_bug.cgi?id=37354))
* Support for GdipCreateRegionRgnData ([Wine Bug #34843](https://bugs.winehq.org/show_bug.cgi?id=34843))
* Support for GetFinalPathNameByHandle ([Wine Bug #36073](https://bugs.winehq.org/show_bug.cgi?id=36073))
* Support for GetSystemTimes ([Wine Bug #19813](https://bugs.winehq.org/show_bug.cgi?id=19813))
@ -112,7 +112,7 @@ Included bug fixes and improvements
* Support for PulseAudio backend for audio ([Wine Bug #10495](https://bugs.winehq.org/show_bug.cgi?id=10495))
* Support for RtlDecompressBuffer ([Wine Bug #37449](https://bugs.winehq.org/show_bug.cgi?id=37449))
* Support for SHCreateSessionKey ([Wine Bug #35630](https://bugs.winehq.org/show_bug.cgi?id=35630))
* Support for TLB dependencies lookup in resources ([Wine Bug #34184](https://bugs.winehq.org/show_bug.cgi?id=34184))
* ~~Support for TLB dependencies lookup in resources~~ ([Wine Bug #34184](https://bugs.winehq.org/show_bug.cgi?id=34184))
* Support for TOOLTIPS_GetTipText edge cases ([Wine Bug #30648](https://bugs.winehq.org/show_bug.cgi?id=30648))
* Support for TransmitFile ([Wine Bug #5048](https://bugs.winehq.org/show_bug.cgi?id=5048))
* Support for UTF7 encoding/decoding ([Wine Bug #27388](https://bugs.winehq.org/show_bug.cgi?id=27388))
@ -125,10 +125,10 @@ Included bug fixes and improvements
* Support for setcap on wine-preloader ([Wine Bug #26256](https://bugs.winehq.org/show_bug.cgi?id=26256))
* Support for stored file ACLs ([Wine Bug #31858](https://bugs.winehq.org/show_bug.cgi?id=31858))
* Support for wine64 on FreeBSD/PC-BSD ([Wine Bug #34330](https://bugs.winehq.org/show_bug.cgi?id=34330))
* Support for ws2_32.inet_pton ([Wine Bug #36713](https://bugs.winehq.org/show_bug.cgi?id=36713))
* ~~Support for ws2_32.inet_pton~~ ([Wine Bug #36713](https://bugs.winehq.org/show_bug.cgi?id=36713))
* Tumblebugs 2 requires DXTn software encoding support ([Wine Bug #29586](https://bugs.winehq.org/show_bug.cgi?id=29586))
* Unity3D Editor requires ProductId registry value ([Wine Bug #36964](https://bugs.winehq.org/show_bug.cgi?id=36964))
* Update ProductVersion property when applying MSI transforms ([Wine Bug #37493](https://bugs.winehq.org/show_bug.cgi?id=37493))
* ~~Update ProductVersion property when applying MSI transforms~~ ([Wine Bug #37493](https://bugs.winehq.org/show_bug.cgi?id=37493))
* Update a XIM candidate position when cursor location changes ([Wine Bug #30938](https://bugs.winehq.org/show_bug.cgi?id=30938))
* Use manual relay for RunDLL_CallEntry16 in shell32 ([Wine Bug #23033](https://bugs.winehq.org/show_bug.cgi?id=23033))
* Voobly expects correct handling of WRITECOPY memory protection ([Wine Bug #29384](https://bugs.winehq.org/show_bug.cgi?id=29384))

5
debian/changelog vendored
View File

@ -2,7 +2,10 @@ wine-compholio (1.7.31) UNRELEASED; urgency=low
* Added possibility to temporarily disable patches to patch system.
* Added patch to allow selecting specific audio device for PulseAudio backend.
* Removed patch for iphlpapi stub functions (accepted upstream).
* Removed first part of patches for FindFirstFileExW (accepted upstream).
* Removed patches for FindFirstFileExW (accepted upstream).
* Removed patches for TLB dependencies lookup in resources (accepted upstream).
* Removed patches for ws2_32.inet_pton implementation (fixed upstream).
* Removed patch to update properties when applying MSI transforms (fixed upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Mon, 03 Nov 2014 20:10:04 +0100
wine-compholio (1.7.30) unstable; urgency=low

View File

@ -38,7 +38,6 @@ PATCHLIST := \
imagehlp-BindImageEx.ok \
imm32-Cross_Thread_Access.ok \
iphlpapi-TCP_Table.ok \
kernel32-FindFirstFile.ok \
kernel32-GetFinalPathNameByHandle.ok \
kernel32-GetNumaProcessorNode.ok \
kernel32-GetSystemTimes.ok \
@ -47,7 +46,6 @@ PATCHLIST := \
kernel32-UTF7_Support.ok \
libs-Unicode_Collation.ok \
libwine-BSD_mmap_fixed.ok \
msi-Transform_ProductVersion.ok \
msvcp90-basic_string_wchar_dtor.ok \
ntdll-DOS_Attributes.ok \
ntdll-Dynamic_DST.ok \
@ -64,7 +62,6 @@ PATCHLIST := \
ntdll-WRITECOPY.ok \
ntoskrnl-Irp_Status.ok \
ntoskrnl-Write_CR4.ok \
oleaut32-TLB_Resource.ok \
quartz-MediaSeeking_Positions.ok \
riched20-IText_Interface.ok \
server-ACL_Compat.ok \
@ -104,7 +101,6 @@ PATCHLIST := \
wpcap-Dynamic_Linking.ok \
ws2_32-Connect_Time.ok \
ws2_32-TransmitFile.ok \
ws2_32-inet_pton.ok \
wtsapi32-EnumerateProcesses.ok
.PHONY: install
@ -530,24 +526,6 @@ iphlpapi-TCP_Table.ok:
echo '+ { "iphlpapi-TCP_Table", "Erich E. Hoover", "Implement AllocateAndGetTcpExTableFromStack." },'; \
) > iphlpapi-TCP_Table.ok
# Patchset kernel32-FindFirstFile
# |
# | Included patches:
# | * Implement FindFirstFileExW level FindExInfoBasic. [by Sebastian Lackner]
# |
# | This patchset fixes the following Wine bugs:
# | * [#37354] Support for FindFirstFileExW level FindExInfoBasic
# |
# | Modified files:
# | * dlls/kernel32/file.c, dlls/kernel32/tests/file.c
# |
.INTERMEDIATE: kernel32-FindFirstFile.ok
kernel32-FindFirstFile.ok:
$(call APPLY_FILE,kernel32-FindFirstFile/0001-kernel32-Implement-FindFirstFileExW-level-FindExInfo.patch)
@( \
echo '+ { "kernel32-FindFirstFile", "Sebastian Lackner", "Implement FindFirstFileExW level FindExInfoBasic." },'; \
) > kernel32-FindFirstFile.ok
# Patchset kernel32-GetFinalPathNameByHandle
# |
# | Included patches:
@ -713,24 +691,6 @@ mshtml-sessionStorage.ok:
echo '+ { "mshtml-sessionStorage", "Zhenbo Li", "Implement sessionStorage (partially)." },'; \
) > mshtml-sessionStorage.ok
# Patchset msi-Transform_ProductVersion
# |
# | Included patches:
# | * Update ProductVersion property when applying MSI transforms. [by Sebastian Lackner]
# |
# | This patchset fixes the following Wine bugs:
# | * [#37493] Update ProductVersion property when applying MSI transforms
# |
# | Modified files:
# | * dlls/msi/patch.c
# |
.INTERMEDIATE: msi-Transform_ProductVersion.ok
msi-Transform_ProductVersion.ok:
$(call APPLY_FILE,msi-Transform_ProductVersion/0001-msi-Update-ProductVersion-property-when-applying-tra.patch)
@( \
echo '+ { "msi-Transform_ProductVersion", "Sebastian Lackner", "Update ProductVersion property when applying MSI transforms." },'; \
) > msi-Transform_ProductVersion.ok
# Patchset msvcp90-basic_string_wchar_dtor
# |
# | Included patches:
@ -1040,24 +1000,6 @@ ntoskrnl-Write_CR4.ok:
echo '+ { "ntoskrnl-Write_CR4", "Stefan Leichter", "Emulate write to CR4 register." },'; \
) > ntoskrnl-Write_CR4.ok
# Patchset oleaut32-TLB_Resource
# |
# | Included patches:
# | * Implement TLB dependencies lookup in resources. [by Guillaume Charifi]
# |
# | This patchset fixes the following Wine bugs:
# | * [#34184] Support for TLB dependencies lookup in resources
# |
# | Modified files:
# | * dlls/oleaut32/tests/typelib.c, dlls/oleaut32/typelib.c
# |
.INTERMEDIATE: oleaut32-TLB_Resource.ok
oleaut32-TLB_Resource.ok:
$(call APPLY_FILE,oleaut32-TLB_Resource/0001-oleaut32-Implement-TLB-dependencies-lookup-in-resour.patch)
@( \
echo '+ { "oleaut32-TLB_Resource", "Guillaume Charifi", "Implement TLB dependencies lookup in resources." },'; \
) > oleaut32-TLB_Resource.ok
# Patchset quartz-MediaSeeking_Positions
# |
# | Included patches:
@ -1823,24 +1765,6 @@ ws2_32-TransmitFile.ok:
echo '+ { "ws2_32-TransmitFile", "Erich E. Hoover", "Implement TransmitFile." },'; \
) > ws2_32-TransmitFile.ok
# Patchset ws2_32-inet_pton
# |
# | Included patches:
# | * Implement ws2_32.inet_pton. [by Bruno Jesus]
# |
# | This patchset fixes the following Wine bugs:
# | * [#36713] Support for ws2_32.inet_pton
# |
# | Modified files:
# | * dlls/ws2_32/socket.c, dlls/ws2_32/ws2_32.spec, include/ws2tcpip.h
# |
.INTERMEDIATE: ws2_32-inet_pton.ok
ws2_32-inet_pton.ok:
$(call APPLY_FILE,ws2_32-inet_pton/0001-ws2_32-Implement-inet_pton.patch)
@( \
echo '+ { "ws2_32-inet_pton", "Bruno Jesus", "Implement ws2_32.inet_pton." },'; \
) > ws2_32-inet_pton.ok
# Patchset wtsapi32-EnumerateProcesses
# |
# | Included patches:

View File

@ -1,177 +0,0 @@
From 393e48362c7c856bcb4a9e1c3c58dca1250913b3 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 3 Oct 2014 21:00:22 +0200
Subject: kernel32: Implement FindFirstFileExW level FindExInfoBasic.
---
dlls/kernel32/file.c | 14 +++++++++++---
dlls/kernel32/tests/file.c | 46 +++++++++++++++++++++++++++++++++++-----------
2 files changed, 46 insertions(+), 14 deletions(-)
diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c
index 4a6fc13..006db1c 100644
--- a/dlls/kernel32/file.c
+++ b/dlls/kernel32/file.c
@@ -57,6 +57,7 @@ typedef struct
HANDLE handle; /* handle to directory */
CRITICAL_SECTION cs; /* crit section protecting this structure */
FINDEX_SEARCH_OPS search_op; /* Flags passed to FindFirst. */
+ FINDEX_INFO_LEVELS level; /* Level passed to FindFirst */
UNICODE_STRING mask; /* file mask */
UNICODE_STRING path; /* NT path used to open the directory */
BOOL is_root; /* is directory the root of the drive? */
@@ -1875,7 +1876,7 @@ HANDLE WINAPI FindFirstFileExW( LPCWSTR filename, FINDEX_INFO_LEVELS level,
SetLastError( ERROR_INVALID_PARAMETER );
return INVALID_HANDLE_VALUE;
}
- if (level != FindExInfoStandard)
+ if (level != FindExInfoStandard && level != FindExInfoBasic)
{
FIXME("info level %d not implemented\n", level );
SetLastError( ERROR_INVALID_PARAMETER );
@@ -1979,6 +1980,7 @@ HANDLE WINAPI FindFirstFileExW( LPCWSTR filename, FINDEX_INFO_LEVELS level,
info->data_size = 0;
info->data = NULL;
info->search_op = search_op;
+ info->level = level;
if (device)
{
@@ -2141,8 +2143,14 @@ BOOL WINAPI FindNextFileW( HANDLE handle, WIN32_FIND_DATAW *data )
memcpy( data->cFileName, dir_info->FileName, dir_info->FileNameLength );
data->cFileName[dir_info->FileNameLength/sizeof(WCHAR)] = 0;
- memcpy( data->cAlternateFileName, dir_info->ShortName, dir_info->ShortNameLength );
- data->cAlternateFileName[dir_info->ShortNameLength/sizeof(WCHAR)] = 0;
+
+ if (info->level != FindExInfoBasic)
+ {
+ memcpy( data->cAlternateFileName, dir_info->ShortName, dir_info->ShortNameLength );
+ data->cAlternateFileName[dir_info->ShortNameLength/sizeof(WCHAR)] = 0;
+ }
+ else
+ data->cAlternateFileName[0] = 0;
TRACE("returning %s (%s)\n",
debugstr_w(data->cFileName), debugstr_w(data->cAlternateFileName) );
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index 0973efe..dd9cf06 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -2562,7 +2562,7 @@ static void test_FindNextFileA(void)
ok ( err == ERROR_NO_MORE_FILES, "GetLastError should return ERROR_NO_MORE_FILES\n");
}
-static void test_FindFirstFileExA(FINDEX_SEARCH_OPS search_ops, DWORD flags)
+static void test_FindFirstFileExA(FINDEX_INFO_LEVELS level, FINDEX_SEARCH_OPS search_ops, DWORD flags)
{
WIN32_FIND_DATAA search_results;
HANDLE handle;
@@ -2574,12 +2574,15 @@ static void test_FindFirstFileExA(FINDEX_SEARCH_OPS search_ops, DWORD flags)
return;
}
+ trace("Running FindFirstFileExA tests with level=%d, search_ops=%d, flags=%d\n",
+ level, search_ops, flags);
+
CreateDirectoryA("test-dir", NULL);
_lclose(_lcreat("test-dir\\file1", 0));
_lclose(_lcreat("test-dir\\file2", 0));
CreateDirectoryA("test-dir\\dir1", NULL);
SetLastError(0xdeadbeef);
- handle = pFindFirstFileExA("test-dir\\*", FindExInfoStandard, &search_results, search_ops, NULL, flags);
+ handle = pFindFirstFileExA("test-dir\\*", level, &search_results, search_ops, NULL, flags);
if (handle == INVALID_HANDLE_VALUE && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
{
win_skip("FindFirstFileExA is not implemented\n");
@@ -2590,16 +2593,26 @@ static void test_FindFirstFileExA(FINDEX_SEARCH_OPS search_ops, DWORD flags)
win_skip("FindFirstFileExA flag FIND_FIRST_EX_LARGE_FETCH not supported, skipping test\n");
goto cleanup;
}
- ok(handle != INVALID_HANDLE_VALUE, "FindFirstFile failed (err=%u)\n", GetLastError());
- ok(strcmp(search_results.cFileName, ".") == 0, "First entry should be '.', is %s\n", search_results.cFileName);
+ if ((level == FindExInfoBasic) && handle == INVALID_HANDLE_VALUE && GetLastError() == ERROR_INVALID_PARAMETER)
+ {
+ win_skip("FindFirstFileExA level FindExInfoBasic not supported, skipping test\n");
+ goto cleanup;
+ }
#define CHECK_NAME(fn) (strcmp((fn), "file1") == 0 || strcmp((fn), "file2") == 0 || strcmp((fn), "dir1") == 0)
+#define CHECK_LEVEL(fn) (level != FindExInfoBasic || !(fn)[0])
+
+ ok(handle != INVALID_HANDLE_VALUE, "FindFirstFile failed (err=%u)\n", GetLastError());
+ ok(strcmp(search_results.cFileName, ".") == 0, "First entry should be '.', is %s\n", search_results.cFileName);
+ ok(CHECK_LEVEL(search_results.cAlternateFileName), "FindFirstFile unexpectedly returned an alternate filename\n");
ok(FindNextFileA(handle, &search_results), "Fetching second file failed\n");
ok(strcmp(search_results.cFileName, "..") == 0, "Second entry should be '..' is %s\n", search_results.cFileName);
+ ok(CHECK_LEVEL(search_results.cAlternateFileName), "FindFirstFile unexpectedly returned an alternate filename\n");
ok(FindNextFileA(handle, &search_results), "Fetching third file failed\n");
ok(CHECK_NAME(search_results.cFileName), "Invalid third entry - %s\n", search_results.cFileName);
+ ok(CHECK_LEVEL(search_results.cAlternateFileName), "FindFirstFile unexpectedly returned an alternate filename\n");
SetLastError(0xdeadbeef);
ret = FindNextFileA(handle, &search_results);
@@ -2608,26 +2621,31 @@ static void test_FindFirstFileExA(FINDEX_SEARCH_OPS search_ops, DWORD flags)
skip("File system supports directory filtering\n");
/* Results from the previous call are not cleared */
ok(strcmp(search_results.cFileName, "dir1") == 0, "Third entry should be 'dir1' is %s\n", search_results.cFileName);
+ ok(CHECK_LEVEL(search_results.cAlternateFileName), "FindFirstFile unexpectedly returned an alternate filename\n");
+
}
else
{
ok(ret, "Fetching fourth file failed\n");
ok(CHECK_NAME(search_results.cFileName), "Invalid fourth entry - %s\n", search_results.cFileName);
+ ok(CHECK_LEVEL(search_results.cAlternateFileName), "FindFirstFile unexpectedly returned an alternate filename\n");
ok(FindNextFileA(handle, &search_results), "Fetching fifth file failed\n");
ok(CHECK_NAME(search_results.cFileName), "Invalid fifth entry - %s\n", search_results.cFileName);
+ ok(CHECK_LEVEL(search_results.cAlternateFileName), "FindFirstFile unexpectedly returned an alternate filename\n");
ok(FindNextFileA(handle, &search_results) == FALSE, "Fetching sixth file should fail\n");
}
#undef CHECK_NAME
+#undef CHECK_LEVEL
FindClose( handle );
/* Most Windows systems seem to ignore the FIND_FIRST_EX_CASE_SENSITIVE flag. Unofficial documentation
* suggests that there are registry keys and that it might depend on the used filesystem. */
SetLastError(0xdeadbeef);
- handle = pFindFirstFileExA("TEST-DIR\\*", FindExInfoStandard, &search_results, search_ops, NULL, flags);
+ handle = pFindFirstFileExA("TEST-DIR\\*", level, &search_results, search_ops, NULL, flags);
if (flags & FIND_FIRST_EX_CASE_SENSITIVE)
{
ok(handle != INVALID_HANDLE_VALUE || GetLastError() == ERROR_PATH_NOT_FOUND,
@@ -4192,13 +4210,19 @@ START_TEST(file)
test_MoveFileW();
test_FindFirstFileA();
test_FindNextFileA();
- test_FindFirstFileExA(0, 0);
- test_FindFirstFileExA(0, FIND_FIRST_EX_CASE_SENSITIVE);
- test_FindFirstFileExA(0, FIND_FIRST_EX_LARGE_FETCH);
+ test_FindFirstFileExA(FindExInfoStandard, 0, 0);
+ test_FindFirstFileExA(FindExInfoStandard, 0, FIND_FIRST_EX_CASE_SENSITIVE);
+ test_FindFirstFileExA(FindExInfoStandard, 0, FIND_FIRST_EX_LARGE_FETCH);
+ test_FindFirstFileExA(FindExInfoBasic, 0, 0);
+ test_FindFirstFileExA(FindExInfoBasic, 0, FIND_FIRST_EX_CASE_SENSITIVE);
+ test_FindFirstFileExA(FindExInfoBasic, 0, FIND_FIRST_EX_LARGE_FETCH);
/* FindExLimitToDirectories is ignored if the file system doesn't support directory filtering */
- test_FindFirstFileExA(FindExSearchLimitToDirectories, 0);
- test_FindFirstFileExA(FindExSearchLimitToDirectories, FIND_FIRST_EX_CASE_SENSITIVE);
- test_FindFirstFileExA(FindExSearchLimitToDirectories, FIND_FIRST_EX_LARGE_FETCH);
+ test_FindFirstFileExA(FindExInfoStandard, FindExSearchLimitToDirectories, 0);
+ test_FindFirstFileExA(FindExInfoStandard, FindExSearchLimitToDirectories, FIND_FIRST_EX_CASE_SENSITIVE);
+ test_FindFirstFileExA(FindExInfoStandard, FindExSearchLimitToDirectories, FIND_FIRST_EX_LARGE_FETCH);
+ test_FindFirstFileExA(FindExInfoBasic, FindExSearchLimitToDirectories, 0);
+ test_FindFirstFileExA(FindExInfoBasic, FindExSearchLimitToDirectories, FIND_FIRST_EX_CASE_SENSITIVE);
+ test_FindFirstFileExA(FindExInfoBasic, FindExSearchLimitToDirectories, FIND_FIRST_EX_LARGE_FETCH);
test_LockFile();
test_file_sharing();
test_offset_in_overlapped_structure();
--
2.1.1

View File

@ -1,4 +0,0 @@
Author: Sebastian Lackner
Subject: Implement FindFirstFileExW level FindExInfoBasic.
Revision: 1
Fixes: [37354] Support for FindFirstFileExW level FindExInfoBasic

View File

@ -1,69 +0,0 @@
From 89ce3a340e3086a4b223d8dbe8356eedcf7ec1f1 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 18 Sep 2014 00:38:15 +0200
Subject: msi: Update ProductVersion property when applying transforms.
---
dlls/msi/patch.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/dlls/msi/patch.c b/dlls/msi/patch.c
index a738de1..1cf5373 100644
--- a/dlls/msi/patch.c
+++ b/dlls/msi/patch.c
@@ -118,7 +118,7 @@ error:
return NULL;
}
-static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *transform )
+static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *transform, WCHAR **version_to )
{
static const UINT supported_flags =
MSITRANSFORM_VALIDATE_PRODUCT | MSITRANSFORM_VALIDATE_LANGUAGE |
@@ -255,9 +255,16 @@ static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *transform
msi_free( upgrade_code_installed );
}
+ if ((valid_flags & wanted_flags) != wanted_flags)
+ {
+ free_transform_desc( desc );
+ msiobj_release( &si->hdr );
+ return ERROR_FUNCTION_FAILED;
+ }
+
+ *version_to = strdupW( desc->version_to );
free_transform_desc( desc );
msiobj_release( &si->hdr );
- if ((valid_flags & wanted_flags) != wanted_flags) return ERROR_FUNCTION_FAILED;
TRACE("applicable transform\n");
return ERROR_SUCCESS;
}
@@ -266,6 +273,7 @@ static UINT apply_substorage_transform( MSIPACKAGE *package, MSIDATABASE *patch_
{
UINT ret = ERROR_FUNCTION_FAILED;
IStorage *stg = NULL;
+ WCHAR *version_to;
HRESULT r;
TRACE("%p %s\n", package, debugstr_w(name));
@@ -278,9 +286,16 @@ static UINT apply_substorage_transform( MSIPACKAGE *package, MSIDATABASE *patch_
r = IStorage_OpenStorage( patch_db->storage, name, NULL, STGM_SHARE_EXCLUSIVE, NULL, 0, &stg );
if (SUCCEEDED(r))
{
- ret = check_transform_applicable( package, stg );
+ ret = check_transform_applicable( package, stg, &version_to );
if (ret == ERROR_SUCCESS)
+ {
msi_table_apply_transform( package->db, stg );
+ if (version_to)
+ {
+ msi_set_property( package->db, szProductVersion, version_to, -1 );
+ msi_free( version_to );
+ }
+ }
else
TRACE("substorage transform %s wasn't applicable\n", debugstr_w(name));
IStorage_Release( stg );
--
2.1.2

View File

@ -1,4 +0,0 @@
Author: Sebastian Lackner
Subject: Update ProductVersion property when applying MSI transforms.
Revision: 1
Fixes: [37493] Update ProductVersion property when applying MSI transforms

View File

@ -1,127 +0,0 @@
From ad5b73eba53261f5821493068386c41a8d072751 Mon Sep 17 00:00:00 2001
From: Guillaume Charifi <guillaume.charifi@sfr.fr>
Date: Sat, 1 Nov 2014 08:47:44 +0100
Subject: oleaut32: Implement TLB dependencies lookup in resources.
Changes by Sebastian Lackner <sebastian@fds-team.de>:
* Avoid duplicating code for loading typelibs.
* Avoid casts from const to non-const variables.
* Simplify logic to generate filename.
* Use appropriate function for UUID comparison.
---
dlls/oleaut32/tests/typelib.c | 2 +-
dlls/oleaut32/typelib.c | 73 +++++++++++++++++++++++++++++++++++++------
2 files changed, 65 insertions(+), 10 deletions(-)
diff --git a/dlls/oleaut32/tests/typelib.c b/dlls/oleaut32/tests/typelib.c
index 728185a..45a56ea 100644
--- a/dlls/oleaut32/tests/typelib.c
+++ b/dlls/oleaut32/tests/typelib.c
@@ -5594,7 +5594,7 @@ static void test_dep(void) {
ok(hr == S_OK, "got: %x\n", hr);
hr = ITypeInfo_GetRefTypeInfo(ptInfo, refType, &ptInfoExt);
- todo_wine ok(hr == S_OK || broken(hr == TYPE_E_CANTLOADLIBRARY) /* win 2000 */, "got: %x\n", hr);
+ ok(hr == S_OK || broken(hr == TYPE_E_CANTLOADLIBRARY) /* win 2000 */, "got: %x\n", hr);
ITypeInfo_Release(ptInfo);
if(ptInfoExt)
diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
index 00f5043..6497313 100644
--- a/dlls/oleaut32/typelib.c
+++ b/dlls/oleaut32/typelib.c
@@ -7572,6 +7572,48 @@ static HRESULT ITypeInfoImpl_GetDispatchRefTypeInfo( ITypeInfo *iface,
return E_FAIL;
}
+struct search_res_tlb_params
+{
+ const GUID *guid;
+ ITypeLib *pTLib;
+};
+
+static BOOL CALLBACK search_res_tlb(HMODULE hModule, LPCWSTR lpszType, LPWSTR lpszName, LONG_PTR lParam)
+{
+ struct search_res_tlb_params *params = (LPVOID)lParam;
+ static const WCHAR formatW[] = {'\\','%','d',0};
+ WCHAR szPath[MAX_PATH+1];
+ ITypeLib2 *pTLib = NULL;
+ HRESULT ret;
+ DWORD len;
+
+ if (IS_INTRESOURCE(lpszName) == FALSE)
+ return TRUE;
+
+ if (!(len = GetModuleFileNameW(hModule, szPath, MAX_PATH)))
+ return TRUE;
+
+ if (snprintfW(szPath + len, sizeof(szPath)/sizeof(WCHAR) - len,
+ formatW, PtrToInt(lpszName)) < 0)
+ {
+ return TRUE;
+ }
+
+ ret = LoadTypeLibEx(szPath, REGKIND_NONE, (ITypeLib **)&pTLib);
+ if (SUCCEEDED(ret))
+ {
+ ITypeLibImpl *impl = impl_from_ITypeLib2(pTLib);
+ if (IsEqualGUID(params->guid, impl->guid))
+ {
+ params->pTLib = (ITypeLib *)pTLib;
+ return FALSE; /* stop enumeration */
+ }
+ ITypeLib_Release((ITypeLib *)pTLib);
+ }
+
+ return TRUE;
+}
+
/* ITypeInfo::GetRefTypeInfo
*
* If a type description references other type descriptions, it retrieves
@@ -7665,20 +7707,33 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeInfo(
ITypeLib_AddRef(pTLib);
result = S_OK;
} else {
+ static const WCHAR TYPELIBW[] = {'T','Y','P','E','L','I','B',0};
+ struct search_res_tlb_params params;
BSTR libnam;
TRACE("typeinfo in imported typelib that isn't already loaded\n");
- result = query_typelib_path(TLB_get_guid_null(ref_type->pImpTLInfo->guid),
- ref_type->pImpTLInfo->wVersionMajor,
- ref_type->pImpTLInfo->wVersionMinor,
- This->pTypeLib->syskind,
- ref_type->pImpTLInfo->lcid, &libnam, TRUE);
- if(FAILED(result))
- libnam = SysAllocString(ref_type->pImpTLInfo->name);
+ /* Search in resource table */
+ params.guid = TLB_get_guid_null(ref_type->pImpTLInfo->guid);
+ params.pTLib = NULL;
+ EnumResourceNamesW(NULL, TYPELIBW, search_res_tlb, (LONG_PTR)&params);
+ pTLib = params.pTLib;
+ result = S_OK;
- result = LoadTypeLib(libnam, &pTLib);
- SysFreeString(libnam);
+ if (!pTLib)
+ {
+ /* Search on disk */
+ result = query_typelib_path(TLB_get_guid_null(ref_type->pImpTLInfo->guid),
+ ref_type->pImpTLInfo->wVersionMajor,
+ ref_type->pImpTLInfo->wVersionMinor,
+ This->pTypeLib->syskind,
+ ref_type->pImpTLInfo->lcid, &libnam, TRUE);
+ if (FAILED(result))
+ libnam = SysAllocString(ref_type->pImpTLInfo->name);
+
+ result = LoadTypeLib(libnam, &pTLib);
+ SysFreeString(libnam);
+ }
if(SUCCEEDED(result)) {
ref_type->pImpTLInfo->pImpTypeLib = impl_from_ITypeLib(pTLib);
--
2.1.2

View File

@ -1,4 +0,0 @@
Author: Guillaume Charifi
Subject: Implement TLB dependencies lookup in resources.
Revision: 1
Fixes: [34184] Support for TLB dependencies lookup in resources

View File

@ -1,57 +0,0 @@
From c787fe4fa34e952cdc77501c70db6d210f471814 Mon Sep 17 00:00:00 2001
From: Bruno Jesus <00cpxxx@gmail.com>
Date: Sun, 27 Jul 2014 09:38:18 -0600
Subject: ws2_32: Implement inet_pton.
---
dlls/ws2_32/socket.c | 10 ++++++++++
dlls/ws2_32/ws2_32.spec | 1 +
include/ws2tcpip.h | 2 +-
3 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 5900c8f..75adae5 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -6904,6 +6904,16 @@ PCSTR WINAPI WS_inet_ntop( INT family, PVOID addr, PSTR buffer, SIZE_T len )
}
/***********************************************************************
+ * inet_pton (WS2_32.@)
+ */
+INT WINAPI WS_inet_pton( INT family, PCSTR addr, PVOID buffer)
+{
+ INT ret = inet_pton(family, addr, buffer);
+ if (ret == -1) SetLastError(wsaErrno());
+ return ret;
+}
+
+/***********************************************************************
* WSAStringToAddressA (WS2_32.80)
*/
INT WINAPI WSAStringToAddressA(LPSTR AddressString,
diff --git a/dlls/ws2_32/ws2_32.spec b/dlls/ws2_32/ws2_32.spec
index 0811b74..f7c6c2d 100644
--- a/dlls/ws2_32/ws2_32.spec
+++ b/dlls/ws2_32/ws2_32.spec
@@ -121,3 +121,4 @@
@ stdcall getaddrinfo(str str ptr ptr) WS_getaddrinfo
@ stdcall getnameinfo(ptr long ptr long ptr long long) WS_getnameinfo
@ stdcall inet_ntop(long ptr ptr long) WS_inet_ntop
+@ stdcall inet_pton(long ptr ptr) WS_inet_pton
diff --git a/include/ws2tcpip.h b/include/ws2tcpip.h
index b3a6a1f..6002433 100644
--- a/include/ws2tcpip.h
+++ b/include/ws2tcpip.h
@@ -177,7 +177,7 @@ PCSTR WINAPI WS(inet_ntop)(INT,PVOID,PSTR,SIZE_T);
#define InetNtopA WS(inet_ntop)
PCWSTR WINAPI InetNtopW(INT,PVOID,PWSTR,SIZE_T);
#define InetNtop WINELIB_NAME_AW(InetNtop)
-int WINAPI WS(inet_pton)(INT,PCSTR,PVOID);
+INT WINAPI WS(inet_pton)(INT,PCSTR,PVOID);
#define InetPtonA WS(inet_pton)
int WINAPI InetPtonW(INT,PCWSTR,PVOID);
#define InetPton WINELIB_NAME_AW(InetPton)
--
1.7.9.5

View File

@ -1,4 +0,0 @@
Author: Bruno Jesus
Subject: Implement ws2_32.inet_pton.
Revision: 1
Fixes: [36713] Support for ws2_32.inet_pton