https://git.reactos.org/?p=reactos.git;a=commitdiff;h=caa225a496ce6875ea3c447964915a1b6b82751a

commit caa225a496ce6875ea3c447964915a1b6b82751a
Author:     winesync <[email protected]>
AuthorDate: Sun Mar 13 19:08:41 2022 +0100
Commit:     Mark Jansen <[email protected]>
CommitDate: Sun Mar 20 19:28:30 2022 +0100

    [WINESYNC] msi: Fix table ref count on create.
    
    Signed-off-by: Piotr Caban <[email protected]>
    Signed-off-by: Hans Leidekker <[email protected]>
    Signed-off-by: Alexandre Julliard <[email protected]>
    
    wine commit id 405486fbe6853c78744099fa1ebe07995e07a438 by Piotr Caban 
<[email protected]>
---
 dll/win32/msi/create.c | 2 +-
 dll/win32/msi/query.h  | 2 +-
 dll/win32/msi/table.c  | 7 +++++--
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/dll/win32/msi/create.c b/dll/win32/msi/create.c
index 6133159dce6..94c62ec5733 100644
--- a/dll/win32/msi/create.c
+++ b/dll/win32/msi/create.c
@@ -68,7 +68,7 @@ static UINT CREATE_execute( struct tagMSIVIEW *view, 
MSIRECORD *record )
     if (cv->bIsTemp && !cv->hold)
         return ERROR_SUCCESS;
 
-    return msi_create_table( cv->db, cv->name, cv->col_info, persist );
+    return msi_create_table( cv->db, cv->name, cv->col_info, persist, cv->hold 
);
 }
 
 static UINT CREATE_close( struct tagMSIVIEW *view )
diff --git a/dll/win32/msi/query.h b/dll/win32/msi/query.h
index c0144d30544..5e5f3906f4f 100644
--- a/dll/win32/msi/query.h
+++ b/dll/win32/msi/query.h
@@ -149,7 +149,7 @@ int sqliteGetToken(const WCHAR *z, int *tokenType, int 
*skip) DECLSPEC_HIDDEN;
 MSIRECORD *msi_query_merge_record( UINT fields, const column_info *vl, 
MSIRECORD *rec ) DECLSPEC_HIDDEN;
 
 UINT msi_create_table( MSIDATABASE *db, LPCWSTR name, column_info *col_info,
-                       MSICONDITION persistent ) DECLSPEC_HIDDEN;
+                       MSICONDITION persistent, BOOL hold ) DECLSPEC_HIDDEN;
 
 UINT msi_select_update( MSIVIEW *view, MSIRECORD *rec, UINT row ) 
DECLSPEC_HIDDEN;
 
diff --git a/dll/win32/msi/table.c b/dll/win32/msi/table.c
index db4dd59f958..7fae4ad07ae 100644
--- a/dll/win32/msi/table.c
+++ b/dll/win32/msi/table.c
@@ -713,7 +713,7 @@ static UINT get_tablecolumns( MSIDATABASE *db, LPCWSTR 
szTableName, MSICOLUMNINF
 }
 
 UINT msi_create_table( MSIDATABASE *db, LPCWSTR name, column_info *col_info,
-                       MSICONDITION persistent )
+                       MSICONDITION persistent, BOOL hold )
 {
     UINT r, nField;
     MSIVIEW *tv = NULL;
@@ -733,7 +733,7 @@ UINT msi_create_table( MSIDATABASE *db, LPCWSTR name, 
column_info *col_info,
     if( !table )
         return ERROR_FUNCTION_FAILED;
 
-    table->ref_count = 1;
+    table->ref_count = 0;
     table->row_count = 0;
     table->data = NULL;
     table->data_persistent = NULL;
@@ -742,6 +742,9 @@ UINT msi_create_table( MSIDATABASE *db, LPCWSTR name, 
column_info *col_info,
     table->persistent = persistent;
     lstrcpyW( table->name, name );
 
+    if( hold )
+        table->ref_count++;
+
     for( col = col_info; col; col = col->next )
         table->col_count++;
 

Reply via email to