diff --git a/dlls/msi/drop.c b/dlls/msi/drop.c index a385633d442..f0b58039fd3 100644 --- a/dlls/msi/drop.c +++ b/dlls/msi/drop.c @@ -78,6 +78,20 @@ static UINT DROP_get_dimensions(struct tagMSIVIEW *view, UINT *rows, UINT *cols) return ERROR_FUNCTION_FAILED; } +static UINT DROP_delete( struct tagMSIVIEW *view ) +{ + MSIDROPVIEW *dv = (MSIDROPVIEW*)view; + + TRACE("%p\n", dv ); + + if( dv->table ) + dv->table->ops->delete( dv->table ); + + msi_free( dv ); + + return ERROR_SUCCESS; +} + static const MSIVIEWOPS drop_ops = { NULL, @@ -91,7 +105,7 @@ static const MSIVIEWOPS drop_ops = DROP_get_dimensions, NULL, NULL, - NULL, + DROP_delete, NULL, NULL, NULL, diff --git a/dlls/msi/table.c b/dlls/msi/table.c index 7c341a7cdf3..fc36079f506 100644 --- a/dlls/msi/table.c +++ b/dlls/msi/table.c @@ -2326,7 +2326,6 @@ static UINT TABLE_drop(struct tagMSIVIEW *view) list_remove(&tv->table->entry); free_table(tv->table); - TABLE_delete(view); done: msiobj_release(&rec->hdr);