[PATCH 4/5] msi: Don't reimplement record formatting.

Zebediah Figura z.figura12 at gmail.com
Sun Jun 18 18:44:20 CDT 2017


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/msi/package.c       | 41 ++++++-----------------------------------
 dlls/msi/tests/package.c |  1 -
 2 files changed, 6 insertions(+), 36 deletions(-)

diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index eae01e0..f16b1dc 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -1709,8 +1709,8 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType, MSIREC
     static const WCHAR szSetProgress[] = {'S','e','t','P','r','o','g','r','e','s','s',0};
     static const WCHAR szActionText[] = {'A','c','t','i','o','n','T','e','x','t',0};
     MSIRECORD *uirow;
-    LPWSTR deformated, message;
-    DWORD i, len, total_len, log_type = 0;
+    LPWSTR deformated, message = {0};
+    DWORD len, log_type = 0;
     INT rc = 0;
     char *msg;
 
@@ -1776,39 +1776,10 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType, MSIREC
     }
     else
     {
-        static const WCHAR format[] = {'%','u',':',' ',0};
-        UINT count = MSI_RecordGetFieldCount( record );
-        WCHAR *p;
-
-        total_len = 1;
-        for (i = 1; i <= count; i++)
-        {
-            len = 0;
-            MSI_RecordGetStringW( record, i, NULL, &len );
-            total_len += len + 13;
-        }
-        p = message = msi_alloc( total_len * sizeof(WCHAR) );
-        if (!p) return ERROR_OUTOFMEMORY;
-
-        for (i = 1; i <= count; i++)
-        {
-            if (count > 1)
-            {
-                len = sprintfW( p, format, i );
-                total_len -= len;
-                p += len;
-            }
-            len = total_len;
-            MSI_RecordGetStringW( record, i, p, &len );
-            total_len -= len;
-            p += len;
-            if (count > 1 && total_len)
-            {
-                *p++ = ' ';
-                total_len--;
-            }
-        }
-        p[0] = 0;
+        MSI_FormatRecordW(package, record, message, &len);
+        len++;
+        message = msi_alloc(len * sizeof(WCHAR));
+        MSI_FormatRecordW(package, record, message, &len);
     }
 
     /* convert it to ASCII */
diff --git a/dlls/msi/tests/package.c b/dlls/msi/tests/package.c
index d15b397..503cf9a 100644
--- a/dlls/msi/tests/package.c
+++ b/dlls/msi/tests/package.c
@@ -9082,7 +9082,6 @@ static INT CALLBACK externalui_callback(void *context, UINT message_type, LPCSTR
 {
     externalui_ran = 1;
     ok(message_type == INSTALLMESSAGE_USER, "expected INSTALLMESSAGE_USER, got %08x\n", message_type);
-    todo_wine
     ok(!strcmp(message, "test message 12345"), "message didn't match\n");
     return 0;
 }
-- 
2.7.4




More information about the wine-patches mailing list