msi: Don't create a temporary table that is not held.
diff --git a/dlls/msi/create.c b/dlls/msi/create.c
index 0d4d9cf..8a801f2 100644
--- a/dlls/msi/create.c
+++ b/dlls/msi/create.c
@@ -44,6 +44,7 @@
MSIDATABASE *db;
LPWSTR name;
BOOL bIsTemp;
+ BOOL hold;
column_info *col_info;
} MSICREATEVIEW;
@@ -62,9 +63,12 @@
MSITABLE *table;
BOOL persist = (cv->bIsTemp) ? MSICONDITION_FALSE : MSICONDITION_TRUE;
- TRACE("%p Table %s (%s)\n", cv, debugstr_w(cv->name),
+ TRACE("%p Table %s (%s)\n", cv, debugstr_w(cv->name),
cv->bIsTemp?"temporary":"permanent");
+ if (cv->bIsTemp && !cv->hold)
+ return ERROR_SUCCESS;
+
return msi_create_table( cv->db, cv->name, cv->col_info, persist, &table);
}
@@ -197,6 +201,7 @@
cv->name = table;
cv->col_info = col_info;
cv->bIsTemp = temp;
+ cv->hold = hold;
*view = (MSIVIEW*) cv;
return ERROR_SUCCESS;