]> andersk Git - splint.git/blob - test/linked3.c
Added the FAQ and a document on using realloc to CVS.
[splint.git] / test / linked3.c
1 typedef struct _node *node;
2
3 struct _node {
4   char *val;
5   /*@null@*/ node next;
6 }
7
8 void node_free1 (/*@only@*/ node n)
9 {
10   free (n); /* 2 errors: must free n->next, n->val */
11 }
12
13 void node_free2 (/*@only@*/ node n)
14 {
15   node nn = n->next;
16   free (n); /* error: must free n->val */
17 } /* error - nn not released */
18   
19 void node_free3 (/*@only@*/ node n)
20 {
21   node nn = n->next;
22   free (n->val);
23   free (n); /* okay */
24   if (nn != NULL) {
25     node_free1 (nn); /* okay (error for null) */
26   }
27 } /* okay */
28   
This page took 0.160781 seconds and 5 git commands to generate.