[5/8] msi: Check the transform language against the package language instead of the system language.

Hans Leidekker hans at codeweavers.com
Thu Jul 7 02:22:48 CDT 2011


Fixes http://bugs.winehq.org/show_bug.cgi?id=24584
---
 dlls/msi/patch.c |   26 +++++++++++++++-----------
 1 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/dlls/msi/patch.c b/dlls/msi/patch.c
index a31802e..b7ee8e7 100644
--- a/dlls/msi/patch.c
+++ b/dlls/msi/patch.c
@@ -32,11 +32,21 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(msi);
 
+static BOOL match_language( MSIPACKAGE *package, LANGID langid )
+{
+    UINT i;
+
+    if (!package->num_langids || !langid) return TRUE;
+    for (i = 0; i < package->num_langids; i++)
+    {
+        if (package->langids[i] == langid) return TRUE;
+    }
+    return FALSE;
+}
+
 static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *patch )
 {
-    static const WCHAR szSystemLanguageID[] = {
-        'S','y','s','t','e','m','L','a','n','g','u','a','g','e','I','D',0};
-    LPWSTR prod_code, patch_product, langid = NULL, template = NULL;
+    LPWSTR prod_code, patch_product, template = NULL;
     UINT ret = ERROR_FUNCTION_FAILED;
 
     prod_code = msi_dup_property( package->db, szProductCode );
@@ -68,14 +78,9 @@ static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *patch )
             msiobj_release( &si->hdr );
             goto end;
         }
-        langid = msi_dup_property( package->db, szSystemLanguageID );
-        if (!langid)
-        {
-            msiobj_release( &si->hdr );
-            goto end;
-        }
+        TRACE("template: %s\n", debugstr_w(template));
         p = strchrW( template, ';' );
-        if (p && (!strcmpW( p + 1, langid ) || !strcmpW( p + 1, szZero )))
+        if (p && match_language( package, atoiW( p + 1 ) ))
         {
             TRACE("applicable transform\n");
             ret = ERROR_SUCCESS;
@@ -88,7 +93,6 @@ end:
     msi_free( patch_product );
     msi_free( prod_code );
     msi_free( template );
-    msi_free( langid );
     return ret;
 }
 
-- 
1.7.4.1







More information about the wine-patches mailing list