]> andersk Git - splint.git/blame - test/linked6.c
Pushed back constraintResolve.c to the previous version.
[splint.git] / test / linked6.c
CommitLineData
80ee600a 1typedef struct _node *node;
2
3typedef struct {
4 char *val;
5} *item;
6
7struct _node {
8 /*@only@*/ item val;
9 /*@null@*/ node next;
10}
11
12extern void keeper (/*@keep@*/ item iv);
13
14void node_free1 (/*@only@*/ node n)
15{
16 free (n); /* 2 errors: must free n->next, n->val */
17}
18
19void node_free2 (/*@only@*/ node n)
20{
21 node nn = n->next;
22 keeper (n->val);
23 free (n); /* okay */
24} /* error - nn not released */
25
26void node_free3 (/*@only@*/ node n)
27{
28 node nn = n->next;
29 keeper (n->val);
30 free (n); /* okay */
31 if (nn != NULL) {
32 node_free1 (nn); /* okay (error for null) */
33 }
34} /* okay */
35
This page took 0.42794 seconds and 5 git commands to generate.