James Hawkins : msi: Use a SQL marker to query the _Property table when fetching a property.

Alexandre Julliard julliard at winehq.org
Mon Mar 2 09:01:42 CST 2009


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

Author: James Hawkins <truiken at gmail.com>
Date:   Mon Mar  2 02:33:56 2009 -0800

msi: Use a SQL marker to query the _Property table when fetching a property.

---

 dlls/msi/package.c |   24 ++++++++++++++++++++++--
 1 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index f662fe0..7172ff4 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -1403,16 +1403,36 @@ UINT WINAPI MsiSetPropertyW( MSIHANDLE hInstall, LPCWSTR szName, LPCWSTR szValue
 
 static MSIRECORD *MSI_GetPropertyRow( MSIPACKAGE *package, LPCWSTR name )
 {
+    MSIQUERY *view;
+    MSIRECORD *rec, *row = NULL;
+    UINT r;
+
     static const WCHAR query[]= {
         'S','E','L','E','C','T',' ','`','V','a','l','u','e','`',' ',
         'F','R','O','M',' ' ,'`','_','P','r','o','p','e','r','t','y','`',
         ' ','W','H','E','R','E',' ' ,'`','_','P','r','o','p','e','r','t','y','`',
-        '=','\'','%','s','\'',0};
+        '=','?',0};
 
     if (!name || !*name)
         return NULL;
 
-    return MSI_QueryGetRecord( package->db, query, name );
+    rec = MSI_CreateRecord(1);
+    if (!rec)
+        return NULL;
+
+    MSI_RecordSetStringW(rec, 1, name);
+
+    r = MSI_DatabaseOpenViewW(package->db, query, &view);
+    if (r == ERROR_SUCCESS)
+    {
+        MSI_ViewExecute(view, rec);
+        MSI_ViewFetch(view, &row);
+        MSI_ViewClose(view);
+        msiobj_release(&view->hdr);
+    }
+
+    msiobj_release(&rec->hdr);
+    return row;
 }
 
 /* internal function, not compatible with MsiGetPropertyW */




More information about the wine-cvs mailing list