Bug 1506 - Memory leak in sample code for LIST_, TAILQ_, and CIRCLEQ_REMOVE
Summary: Memory leak in sample code for LIST_, TAILQ_, and CIRCLEQ_REMOVE
Status: RESOLVED DUPLICATE of bug 1481
Alias: None
Product: glibc
Classification: Unclassified
Component: manual (show other bugs)
Version: unspecified
: P2 minor
Target Milestone: ---
Assignee: Roland McGrath
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-10-20 16:14 UTC by David Leppik
Modified: 2016-05-17 18:39 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:
fweimer: security-


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description David Leppik 2005-10-20 16:14:42 UTC
The man page describing sys/queue.h include sample code which is written in a
way that suggests that the *_REMOVE macros free memory.  For example:

 while (head.lh_first != NULL)           /* Delete. */
             LIST_REMOVE(head.lh_first, entries);

As a general purpose example of how to clear a LIST, this is misleading. 
Especially for all the kids today whose primary language is Java, C#, or
Objective-C.  (Sadly, I've become one of those kids :-) )

FreeBSD's current man page is more verbose:

                                             /* TailQ Deletion. */
> >      while (!TAILQ_EMPTY(&head)) {
> >              n1 = TAILQ_FIRST(&head);
> >              TAILQ_REMOVE(&head, n1, entries);
> >              free(n1);
> >      }
> >                                              /* Faster TailQ Deletion. */
> >      n1 = TAILQ_FIRST(&head);
> >      while (n1 != NULL) {
> >              n2 = TAILQ_NEXT(n1, entries);
> >              free(n1);
> >              n1 = n2;
> >      }
> >      TAILQ_INIT(&head);

(Thanks to John Baldwin for pointing the FreeBSD version out to me.)
Comment 1 Jakub Jelinek 2005-10-20 16:19:09 UTC

*** This bug has been marked as a duplicate of 1481 ***
Comment 2 David Leppik 2005-10-20 16:43:02 UTC
Subject: Re:  Memory leak in sample code for LIST_, TAILQ_,
 and CIRCLEQ_REMOVE

Should I create a bug that there is no documentation for
libc/misc/sys/queue.h, or is there someone else who mantains that code?

David


jakub at redhat dot com wrote:
> ------- Additional Comments From jakub at redhat dot com  2005-10-20 16:19 -------
> 
> 
> *** This bug has been marked as a duplicate of 1481 ***
> 


Comment 3 Roland McGrath 2005-10-23 01:03:44 UTC
You can file an enhancement bug on the manual that the header and its macros
should be documented.  But the most effective thing will be to contribute some
documentation to the manual.  This is far from the highest priority for
improving the libc manual, and there is nearly no volunteer time available for
working on the manual.