From 035157a2fdb2fe5243631748d6c4475856890be0 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 8 Jan 1993 22:07:33 +0000 Subject: Formerly vpath.c.~6~ --- vpath.c | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) (limited to 'vpath.c') diff --git a/vpath.c b/vpath.c index d804150..aa8f367 100644 --- a/vpath.c +++ b/vpath.c @@ -124,24 +124,33 @@ construct_vpath_list (pattern, dirpath) /* Remove matching listings. */ register struct vpath *path, *lastpath; - lastpath = vpaths; - for (path = vpaths; path != 0; lastpath = path, path = path->next) - if (pattern == 0 - || (((percent == 0 && path->percent == 0) - || (percent - pattern == path->percent - path->pattern)) - && streq (pattern, path->pattern))) - { - /* Remove it from the linked list. */ - if (lastpath == vpaths) - vpaths = path->next; - else - lastpath->next = path->next; - - /* Free its unused storage. */ - free (path->pattern); - free ((char *) path->searchpath); - free ((char *) path); - } + lastpath = 0; + path = vpaths; + while (path != 0) + { + struct vpath *next = path->next; + + if (pattern == 0 + || (((percent == 0 && path->percent == 0) + || (percent - pattern == path->percent - path->pattern)) + && streq (pattern, path->pattern))) + { + /* Remove it from the linked list. */ + if (lastpath == 0) + vpaths = path->next; + else + lastpath->next = next; + + /* Free its unused storage. */ + free (path->pattern); + free ((char *) path->searchpath); +, 1993 free ((char *) path); + } + + lastpath = next; + path = next; + } + if (pattern != 0) free (pattern); return; -- cgit v1.2.3