Hans Leidekker : msi: Improve parsing of patch summary information.

Alexandre Julliard julliard at winehq.org
Mon May 31 11:21:40 CDT 2010


Module: wine
Branch: master
Commit: 35a0461baa03dea35df4f80afbd247173b284a02
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=35a0461baa03dea35df4f80afbd247173b284a02

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Mon May 31 12:12:42 2010 +0200

msi: Improve parsing of patch summary information.

---

 dlls/msi/action.c |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index 408c253..0505d33 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -496,6 +496,7 @@ UINT msi_parse_patch_summary( MSISUMMARYINFO *si, MSIPATCHINFO **patch )
 {
     MSIPATCHINFO *pi;
     UINT r = ERROR_SUCCESS;
+    WCHAR *p;
 
     pi = msi_alloc_zero( sizeof(MSIPATCHINFO) );
     if (!pi)
@@ -508,6 +509,30 @@ UINT msi_parse_patch_summary( MSISUMMARYINFO *si, MSIPATCHINFO **patch )
         return ERROR_OUTOFMEMORY;
     }
 
+    p = pi->patchcode;
+    if (*p != '{')
+    {
+        msi_free( pi->patchcode );
+        msi_free( pi );
+        return ERROR_PATCH_PACKAGE_INVALID;
+    }
+
+    p = strchrW( p + 1, '}' );
+    if (!p)
+    {
+        msi_free( pi->patchcode );
+        msi_free( pi );
+        return ERROR_PATCH_PACKAGE_INVALID;
+    }
+
+    if (p[1])
+    {
+        FIXME("patch obsoletes %s\n", debugstr_w(p + 1));
+        p[1] = 0;
+    }
+
+    TRACE("patch code %s\n", debugstr_w(pi->patchcode));
+
     pi->transforms = msi_suminfo_dup_string( si, PID_LASTAUTHOR );
     if (!pi->transforms)
     {




More information about the wine-cvs mailing list