fix invalid free() problem (bug 6658)
authorBrian Paul <brian.paul@tungstengraphics.com>
Wed, 19 Apr 2006 14:42:01 +0000 (14:42 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Wed, 19 Apr 2006 14:42:01 +0000 (14:42 +0000)
src/glu/sgi/libtess/dict.c

index c20f69485029f00c489388562e7df3091637862c..e3750eea225d2d1afaf2fa01233e28d71dc481b9 100644 (file)
@@ -35,8 +35,8 @@
 /*
 ** Author: Eric Veach, July 1994.
 **
-** $Date: 2006/04/06 23:50:44 $ $Revision: 1.2 $
-** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libtess/dict.c,v 1.2 2006/04/06 23:50:44 ajax Exp $
+** $Date: 2006/04/19 14:42:01 $ $Revision: 1.3 $
+** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libtess/dict.c,v 1.3 2006/04/19 14:42:01 brianp Exp $
 */
 
 #include <stddef.h>
@@ -67,14 +67,11 @@ Dict *dictNewDict( void *frame,
 /* really __gl_dictListDeleteDict */
 void dictDeleteDict( Dict *dict )
 {
-  DictNode *node;
-  int done = 0;
+  DictNode *node, *next;
 
-  for( node = dict->head.next; ; node = node->next ) {
-    done = (node == &dict->head);
+  for( node = dict->head.next; node != &dict->head; node = next ) {
+    next = node->next;
     memFree( node );
-    if (done)
-       break;
   }
   memFree( dict );
 }