Module: wine Branch: master Commit: 293bdffa29f5daba1195ad761de7e646bf6c1db0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=293bdffa29f5daba1195ad761d...
Author: James Hawkins truiken@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 */