Commit f69d7bf0 authored by Mike McCormack's avatar Mike McCormack Committed by Alexandre Julliard

msi: Count the number of columns requested and allocate that many,

as columns may be select more than once in from a table.
parent aa81e4fa
...@@ -245,20 +245,23 @@ static UINT SELECT_AddColumn( MSISELECTVIEW *sv, LPCWSTR name ) ...@@ -245,20 +245,23 @@ static UINT SELECT_AddColumn( MSISELECTVIEW *sv, LPCWSTR name )
return ERROR_SUCCESS; return ERROR_SUCCESS;
} }
int select_count_columns( column_info *col )
{
int n;
for (n = 0; col; col = col->next)
n++;
return n;
}
UINT SELECT_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table, UINT SELECT_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table,
column_info *columns ) column_info *columns )
{ {
MSISELECTVIEW *sv = NULL; MSISELECTVIEW *sv = NULL;
UINT count = 0, r; UINT count = 0, r = ERROR_SUCCESS;
TRACE("%p\n", sv ); TRACE("%p\n", sv );
r = table->ops->get_dimensions( table, NULL, &count ); count = select_count_columns( columns );
if( r != ERROR_SUCCESS )
{
ERR("can't get table dimensions\n");
return r;
}
sv = msi_alloc_zero( sizeof *sv + count*sizeof (UINT) ); sv = msi_alloc_zero( sizeof *sv + count*sizeof (UINT) );
if( !sv ) if( !sv )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment