Mike McCormack : msi: Improve error checking when applying transform
data.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Oct 12 15:28:53 CDT 2006
Module: wine
Branch: master
Commit: 1b256f2c6e333a37f5a5a16f7fddcd3160e1125d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=1b256f2c6e333a37f5a5a16f7fddcd3160e1125d
Author: Mike McCormack <mike at codeweavers.com>
Date: Thu Oct 12 18:55:53 2006 +0900
msi: Improve error checking when applying transform data.
---
dlls/msi/table.c | 35 ++++++++++++++++++++---------------
1 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/dlls/msi/table.c b/dlls/msi/table.c
index 26c0cc1..1ef7d0e 100644
--- a/dlls/msi/table.c
+++ b/dlls/msi/table.c
@@ -1900,13 +1900,9 @@ static UINT msi_table_load_transform( MS
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( MS
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:
More information about the wine-cvs
mailing list