msi: fix for MsiGetProperty

Aric Stewart aric at codeweavers.com
Fri Jul 8 11:23:45 CDT 2005


if MsiGetProperty(A/W) is called with a NULL for the value buffer but a 
value in the size for the value buffer, then Msi fills in the size of 
the value into the pointer for size.  This is tested and confirmed with 
native MSI.
-------------- next part --------------
Index: dlls/msi/package.c
===================================================================
RCS file: /home/wine/wine/dlls/msi/package.c,v
retrieving revision 1.45
diff -u -r1.45 package.c
--- dlls/msi/package.c	8 Jul 2005 14:19:00 -0000	1.45
+++ dlls/msi/package.c	8 Jul 2005 16:22:36 -0000
@@ -893,6 +893,10 @@
     if (NULL != szValueBuf && NULL == pchValueBuf)
         return ERROR_INVALID_PARAMETER;
 
+    /* This was tested agienst native msi */
+    if (NULL == szValueBuf && NULL != pchValueBuf)
+        *pchValueBuf = 0;
+
     package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE);
     if (!package)
         return ERROR_INVALID_HANDLE;
@@ -919,6 +923,10 @@
         return ERROR_INVALID_PARAMETER;
     if (NULL != szValueBuf && NULL == pchValueBuf)
         return ERROR_INVALID_PARAMETER;
+
+    /* This was tested agienst native msi */
+    if (NULL == szValueBuf && NULL != pchValueBuf)
+        *pchValueBuf = 0;
 
     package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE);
     if (!package)


More information about the wine-patches mailing list