diff options
author | Tor Andersson <tor@ghostscript.com> | 2009-12-03 22:04:52 +0100 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2009-12-03 22:04:52 +0100 |
commit | b2da3129d24d373b3b297460a31f293f613ce88d (patch) | |
tree | 792104073fb5176d9f7fa953f17b9c6f5e530a77 | |
parent | 8ce333f4a1185b72c89ea39a85d456e42a649c7f (diff) | |
download | mupdf-b2da3129d24d373b3b297460a31f293f613ce88d.tar.xz |
Use iteration for siblings in fz_dropnode.
-rw-r--r-- | fitz/node_misc1.c | 65 |
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 |