diff src/redraw_man.c @ 817:387d1c597632

Change order of statements to fix bug of wild pointers. For some reason, the code is broken for merging from Android_Skia branch. The variable 'coord' in add_rdman_aggr_dirty_areas() is used before initialized; it is a wild pointer.
author Thinker K.F. Li <thinker@codemud.net>
date Mon, 13 Sep 2010 15:33:19 +0800
parents 0e56a1ca19b2
children 86f2c59cef09
line wrap: on
line diff
--- a/src/redraw_man.c	Mon Sep 13 13:25:34 2010 +0800
+++ b/src/redraw_man.c	Mon Sep 13 15:33:19 2010 +0800
@@ -1852,11 +1852,12 @@
     n_zeroing = rdman->zeroing_coords.num;
     zeroings = rdman->zeroing_coords.ds;
     for(i = 0; i < n_zeroing; i++) {
+	coord = zeroings[i];
+	
 	if(coord_get_flags(coord, COF_TEMP_MARK))
 	    continue;
 	coord_set_flags(coord, COF_TEMP_MARK);
 	
-	coord = zeroings[i];
 	pcached_coord = coord_get_cached(coord_get_parent(coord));
 	
 	if(coord_is_root(coord) || IS_CACHE_REDRAW_ALL(pcached_coord))
@@ -2804,7 +2805,7 @@
     rdman_add_shape(rdman, (shape_t *)sh, coord2);
     rdman_shape_changed(rdman, (shape_t *)sh);
 
-    clean_rdman_coords(rdman);
+    rdman_clean_dirties(rdman);
 
     /* Parent cached coord must be updated */
     CU_ASSERT(_coord_get_dirty_areas(rdman->root_coord)->num >= 1);