Hans Leidekker : msi: Perform a suffix match on the volume name.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Apr 17 04:22:21 CDT 2015
Module: wine
Branch: master
Commit: 89693776473f174f45d950e9669044ed46bc331b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=89693776473f174f45d950e9669044ed46bc331b
Author: Hans Leidekker <hans at codeweavers.com>
Date: Thu Apr 16 17:01:55 2015 +0200
msi: Perform a suffix match on the volume name.
---
dlls/msi/media.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/dlls/msi/media.c b/dlls/msi/media.c
index 3dbd1b7..7c8c94f 100644
--- a/dlls/msi/media.c
+++ b/dlls/msi/media.c
@@ -54,8 +54,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(msi);
static BOOL source_matches_volume(MSIMEDIAINFO *mi, LPCWSTR source_root)
{
- WCHAR volume_name[MAX_PATH + 1];
- WCHAR root[MAX_PATH + 1];
+ WCHAR volume_name[MAX_PATH + 1], root[MAX_PATH + 1];
+ const WCHAR *p;
+ int len, len2;
strcpyW(root, source_root);
PathStripToRootW(root);
@@ -66,7 +67,13 @@ static BOOL source_matches_volume(MSIMEDIAINFO *mi, LPCWSTR source_root)
WARN("failed to get volume information for %s (%u)\n", debugstr_w(root), GetLastError());
return FALSE;
}
- return !strcmpiW( mi->volume_label, volume_name );
+
+ len = strlenW( volume_name );
+ len2 = strlenW( mi->volume_label );
+ if (len2 > len) return FALSE;
+ p = volume_name + len - len2;
+
+ return !strcmpiW( mi->volume_label, p );
}
static UINT msi_change_media(MSIPACKAGE *package, MSIMEDIAINFO *mi)
More information about the wine-cvs
mailing list