summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2009-12-03 22:04:52 +0100
committerTor Andersson <tor@ghostscript.com>2009-12-03 22:04:52 +0100
commitb2da3129d24d373b3b297460a31f293f613ce88d (patch)
tree792104073fb5176d9f7fa953f17b9c6f5e530a77
parent8ce333f4a1185b72c89ea39a85d456e42a649c7f (diff)
downloadmupdf-b2da3129d24d373b3b297460a31f293f613ce88d.tar.xz
Use iteration for siblings in fz_dropnode.
-rw-r--r--fitz/node_misc1.c65
1 files changed, 35 insertions, 30 deletions
diff --git a/fitz/node_misc1.c b/fitz/node_misc1.c
index 128406e3..48bd1278 100644
--- a/fitz/node_misc1.c
+++ b/fitz/node_misc1.c
@@ -32,39 +32,44 @@ fz_initnode(fz_node *node, fz_nodekind kind)
void
fz_dropnode(fz_node *node)
{
- if (node->first)
- fz_dropnode(node->first);
- if (node->next)
- fz_dropnode(node->next);
+ fz_node *next;
- switch (node->kind)
+ while (node)
{
- case FZ_NTRANSFORM:
- case FZ_NOVER:
- case FZ_NMASK:
- case FZ_NBLEND:
- break;
- case FZ_NCOLOR:
- fz_dropsolidnode((fz_solidnode *) node);
- break;
- case FZ_NPATH:
- fz_droppathnode((fz_pathnode *) node);
- break;
- case FZ_NTEXT:
- fz_droptextnode((fz_textnode *) node);
- break;
- case FZ_NIMAGE:
- fz_dropimagenode((fz_imagenode *) node);
- break;
- case FZ_NSHADE:
- fz_dropshadenode((fz_shadenode *) node);
- break;
- case FZ_NLINK:
- fz_droplinknode((fz_linknode *) node);
- break;
+ if (node->first)
+ fz_dropnode(node->first);
+
+ switch (node->kind)
+ {
+ case FZ_NTRANSFORM:
+ case FZ_NOVER:
+ case FZ_NMASK:
+ case FZ_NBLEND:
+ break;
+ case FZ_NCOLOR:
+ fz_dropsolidnode((fz_solidnode *) node);
+ break;
+ case FZ_NPATH:
+ fz_droppathnode((fz_pathnode *) node);
+ break;
+ case FZ_NTEXT:
+ fz_droptextnode((fz_textnode *) node);
+ break;
+ case FZ_NIMAGE:
+ fz_dropimagenode((fz_imagenode *) node);
+ break;
+ case FZ_NSHADE:
+ fz_dropshadenode((fz_shadenode *) node);
+ break;
+ case FZ_NLINK:
+ fz_droplinknode((fz_linknode *) node);
+ break;
+ }
+
+ next = node->next;
+ fz_free(node);
+ node = next;
}
-
- fz_free(node);
}
fz_rect