Module Name: src Committed By: rillig Date: Sat Feb 26 11:57:21 UTC 2022
Modified Files: src/usr.bin/make: lst.c Log Message: make: fix memory leak in Lst_Remove (since 2020-10-23) The code to free the list node (as opposed to the node data) was accidentally removed in lst.c 1.83 from 2020-10-23 as part of cleaning up an unnecessarily complicated function for traversing linked lists. The memory leak only affected a few lists that actually used Lst_Remove. Most lists are append-only and are freed using Lst_Done or Lst_Free at the end, which correctly free the memory. To generate a diff of this commit: cvs rdiff -u -r1.105 -r1.106 src/usr.bin/make/lst.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/lst.c diff -u src/usr.bin/make/lst.c:1.105 src/usr.bin/make/lst.c:1.106 --- src/usr.bin/make/lst.c:1.105 Mon Mar 15 16:45:30 2021 +++ src/usr.bin/make/lst.c Sat Feb 26 11:57:21 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lst.c,v 1.105 2021/03/15 16:45:30 rillig Exp $ */ +/* $NetBSD: lst.c,v 1.106 2022/02/26 11:57:21 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -34,7 +34,7 @@ #include "make.h" -MAKE_RCSID("$NetBSD: lst.c,v 1.105 2021/03/15 16:45:30 rillig Exp $"); +MAKE_RCSID("$NetBSD: lst.c,v 1.106 2022/02/26 11:57:21 rillig Exp $"); static ListNode * LstNodeNew(ListNode *prev, ListNode *next, void *datum) @@ -163,6 +163,8 @@ Lst_Remove(List *list, ListNode *ln) list->first = ln->next; if (list->last == ln) list->last = ln->prev; + + free(ln); } /* Replace the datum in the given node with the new datum. */