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