Memory freeing bug in msi

Aric Stewart aric at codeweavers.com
Wed Aug 25 10:41:04 CDT 2004


It is good to free memory after you finish using it instead of just 
before. Should fix intermitent failures with installers including iTunes
-------------- next part --------------
Index: dlls/msi/create.c
===================================================================
RCS file: /home/wine/wine/dlls/msi/create.c,v
retrieving revision 1.8
diff -u -w -r1.8 create.c
--- dlls/msi/create.c	9 Jul 2004 22:25:34 -0000	1.8
+++ dlls/msi/create.c	25 Aug 2004 15:38:41 -0000
@@ -212,9 +212,9 @@
         HeapFree( GetProcessHeap(), 0, t->colname );
         HeapFree( GetProcessHeap(), 0, t );
     }
+    msiobj_release( &cv->db->hdr );
     HeapFree( GetProcessHeap(), 0, cv->name );
     HeapFree( GetProcessHeap(), 0, cv );
-    msiobj_release( &cv->db->hdr );
 
     return ERROR_SUCCESS;
 }
Index: dlls/msi/distinct.c
===================================================================
RCS file: /home/wine/wine/dlls/msi/distinct.c,v
retrieving revision 1.6
diff -u -w -r1.6 distinct.c
--- dlls/msi/distinct.c	9 Jul 2004 22:25:34 -0000	1.6
+++ dlls/msi/distinct.c	25 Aug 2004 15:38:42 -0000
@@ -241,8 +241,8 @@
 
     if( dv->translation )
         HeapFree( GetProcessHeap(), 0, dv->translation );
-    HeapFree( GetProcessHeap(), 0, dv );
     msiobj_release( &dv->db->hdr );
+    HeapFree( GetProcessHeap(), 0, dv );
 
     return ERROR_SUCCESS;
 }
Index: dlls/msi/insert.c
===================================================================
RCS file: /home/wine/wine/dlls/msi/insert.c,v
retrieving revision 1.7
diff -u -w -r1.7 insert.c
--- dlls/msi/insert.c	9 Jul 2004 22:25:34 -0000	1.7
+++ dlls/msi/insert.c	25 Aug 2004 15:38:42 -0000
@@ -179,8 +179,8 @@
     if( sv )
         sv->ops->delete( sv );
     delete_value_list( iv->vals );
-    HeapFree( GetProcessHeap(), 0, iv );
     msiobj_release( &iv->db->hdr );
+    HeapFree( GetProcessHeap(), 0, iv );
 
     return ERROR_SUCCESS;
 }
Index: dlls/msi/order.c
===================================================================
RCS file: /home/wine/wine/dlls/msi/order.c,v
retrieving revision 1.6
diff -u -w -r1.6 order.c
--- dlls/msi/order.c	9 Jul 2004 22:25:34 -0000	1.6
+++ dlls/msi/order.c	25 Aug 2004 15:38:42 -0000
@@ -244,8 +244,8 @@
         HeapFree( GetProcessHeap(), 0, ov->reorder );
     ov->reorder = NULL;
 
-    HeapFree( GetProcessHeap(), 0, ov );
     msiobj_release( &ov->db->hdr );
+    HeapFree( GetProcessHeap(), 0, ov );
 
     return ERROR_SUCCESS;
 }
Index: dlls/msi/update.c
===================================================================
RCS file: /home/wine/wine/dlls/msi/update.c,v
retrieving revision 1.3
diff -u -w -r1.3 update.c
--- dlls/msi/update.c	9 Jul 2004 22:25:34 -0000	1.3
+++ dlls/msi/update.c	25 Aug 2004 15:38:42 -0000
@@ -171,8 +171,8 @@
     if( wv )
         wv->ops->delete( wv );
     delete_value_list( uv->vals );
-    HeapFree( GetProcessHeap(), 0, uv );
     msiobj_release( &uv->db->hdr );
+    HeapFree( GetProcessHeap(), 0, uv );
 
     return ERROR_SUCCESS;
 }
Index: dlls/msi/where.c
===================================================================
RCS file: /home/wine/wine/dlls/msi/where.c,v
retrieving revision 1.12
diff -u -w -r1.12 where.c
--- dlls/msi/where.c	9 Jul 2004 22:25:34 -0000	1.12
+++ dlls/msi/where.c	25 Aug 2004 15:38:42 -0000
@@ -336,8 +336,8 @@
     if( wv->cond )
         delete_expr( wv->cond );
 
-    HeapFree( GetProcessHeap(), 0, wv );
     msiobj_release( &wv->db->hdr );
+    HeapFree( GetProcessHeap(), 0, wv );
 
     return ERROR_SUCCESS;
 }


More information about the wine-patches mailing list