]> andersk Git - splint.git/blame - test/linked5.c
Doing the commit so that files can be taged.
[splint.git] / test / linked5.c
CommitLineData
80ee600a 1typedef struct _node *node;
2
3typedef struct {
4 char *val;
5} *item;
6
7struct _node {
8 /*@dependent@*/ item val;
9 /*@null@*/ node next;
10}
11
12void node_free1 (/*@only@*/ node n)
13{
14 free (n); /* errors: must free n->next */
15}
16
17void node_free2 (/*@only@*/ node n)
18{
19 node nn = n->next;
20 free (n); /* okay */
21} /* error - nn not released */
22
23void node_free3 (/*@only@*/ node n)
24{
25 node nn = n->next;
26 free (n->val); /* error: free dependent */
27 free (n); /* okay */
28 if (nn != NULL) {
29 node_free1 (nn); /* okay (error for null) */
30 }
31} /* okay */
32
This page took 0.06183 seconds and 5 git commands to generate.