diff src/redraw_man.c @ 864:6eaeec6806f2

Fix the issue of potential to free a wild pointer
author Thinker K.F. Li <thinker@codemud.net>
date Wed, 22 Sep 2010 21:14:06 +0800
parents ce6cd06adccf
children 48df0f97f09e
line wrap: on
line diff
--- a/src/redraw_man.c	Wed Sep 22 20:47:41 2010 +0800
+++ b/src/redraw_man.c	Wed Sep 22 21:14:06 2010 +0800
@@ -1362,7 +1362,7 @@
  */
 static int
 compute_area(coord_t *coord) {
-    static co_aix (*poses)[2];
+    static co_aix (*poses)[2] = NULL;
     static int max_poses = 0;
     geo_t *geo;
     int cnt, pos_cnt;
@@ -1373,7 +1373,8 @@
     }
 
     if(max_poses < (cnt * 2)) {
-	free(poses);
+	if(poses)
+	    free(poses);
 	max_poses = cnt * 2;
 	poses = (co_aix (*)[2])malloc(sizeof(co_aix [2]) * max_poses);
 	if(poses == NULL)