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;