Mike McCormack : msi: Use MSI_IterateRecords when cloning properties.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Nov 27 07:10:28 CST 2006
Module: wine
Branch: master
Commit: 0670ebc67b10eafba194cab418ce8637715faba7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0670ebc67b10eafba194cab418ce8637715faba7
Author: Mike McCormack <mike at codeweavers.com>
Date: Mon Nov 27 17:48:10 2006 +0900
msi: Use MSI_IterateRecords when cloning properties.
---
dlls/msi/package.c | 52 ++++++++++++++++++++--------------------------------
1 files changed, 20 insertions(+), 32 deletions(-)
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index 164c7f2..57bf0f6 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -60,45 +60,33 @@ static void MSI_FreePackage( MSIOBJECTHD
msi_free_properties( package );
}
+static UINT iterate_clone_props(MSIRECORD *row, LPVOID param)
+{
+ MSIPACKAGE *package = param;
+ LPCWSTR name, value;
+
+ name = MSI_RecordGetString( row, 1 );
+ value = MSI_RecordGetString( row, 2 );
+ MSI_SetPropertyW( package, name, value );
+
+ return ERROR_SUCCESS;
+}
+
static UINT clone_properties( MSIPACKAGE *package )
{
- MSIQUERY * view = NULL;
- UINT rc;
static const WCHAR Query[] = {
- 'S','E','L','E','C','T',' ','*',' ',
- 'F','R','O','M',' ','`','P','r','o','p','e','r','t','y','`',0};
-
- /* clone the existing properties */
- rc = MSI_DatabaseOpenViewW( package->db, Query, &view );
- if (rc != ERROR_SUCCESS)
- return rc;
+ 'S','E','L','E','C','T',' ','*',' ',
+ 'F','R','O','M',' ','`','P','r','o','p','e','r','t','y','`',0};
+ MSIQUERY *view = NULL;
+ UINT r;
- rc = MSI_ViewExecute(view, 0);
- if (rc != ERROR_SUCCESS)
+ r = MSI_OpenQuery( package->db, &view, Query );
+ if (r == ERROR_SUCCESS)
{
- MSI_ViewClose(view);
+ r = MSI_IterateRecords( view, NULL, iterate_clone_props, package );
msiobj_release(&view->hdr);
- return rc;
- }
- while (1)
- {
- MSIRECORD * row;
- LPCWSTR name, value;
-
- rc = MSI_ViewFetch(view,&row);
- if (rc != ERROR_SUCCESS)
- break;
-
- name = MSI_RecordGetString( row, 1 );
- value = MSI_RecordGetString( row, 2 );
- MSI_SetPropertyW( package, name, value );
-
- msiobj_release( &row->hdr );
}
- MSI_ViewClose(view);
- msiobj_release(&view->hdr);
-
- return rc;
+ return r;
}
/*
More information about the wine-cvs
mailing list