msi: Improve error checking when applying transform data.

This commit is contained in:
Mike McCormack 2006-10-12 18:55:53 +09:00 committed by Alexandre Julliard
parent 6a9222fc39
commit 1b256f2c6e
1 changed files with 20 additions and 15 deletions

View File

@ -1900,13 +1900,9 @@ static UINT msi_table_load_transform( MSIDATABASE *db, IStorage *stg,
rec = msi_get_transform_record( tv, st, &rawdata[n] );
if (rec)
{
UINT row = 0;
r = msi_table_find_row( tv, rec, &row );
if( rawdata[n] & 1)
if ( mask & 1 )
{
TRACE("insert [%d]: \n", row);
TRACE("inserting record\n");
/*
* Native msi seems writes nul into the
@ -1921,24 +1917,33 @@ static UINT msi_table_load_transform( MSIDATABASE *db, IStorage *stg,
ERR("_Columns has non-null data...\n");
}
TABLE_insert_row( &tv->view, rec );
}
else if( mask & 0xff )
{
TRACE("modify [%d]: \n", row);
msi_table_modify_row( tv, rec, row, mask );
r = TABLE_insert_row( &tv->view, rec );
if (r != ERROR_SUCCESS)
ERR("insert row failed\n");
}
else
{
TRACE("delete [%d]: \n", row);
msi_delete_row( tv, row );
UINT row = 0;
r = msi_table_find_row( tv, rec, &row );
if (r != ERROR_SUCCESS)
ERR("no matching row to transform\n");
else if ( mask )
{
TRACE("modifying row [%d]: \n", row);
msi_table_modify_row( tv, rec, row, mask );
}
else
{
TRACE("deleting row [%d]: \n", row);
msi_delete_row( tv, row );
}
}
if( TRACE_ON(msidb) ) dump_record( rec );
msiobj_release( &rec->hdr );
}
n += sz/2;
}
err: