Various minor fixes for compiler/linter (other then splint itself) warnings.
[splint-patched.git] / test / linked3.c
blob47d1e95cf4154801ae46dd306742f8f87c19dfa1
1 typedef struct _node *node;
3 struct _node {
4 char *val;
5 /*@null@*/ node next;
8 void node_free1 (/*@only@*/ node n)
10 free (n); /* 2 errors: must free n->next, n->val */
13 void node_free2 (/*@only@*/ node n)
15 node nn = n->next;
16 free (n); /* error: must free n->val */
17 } /* error - nn not released */
19 void node_free3 (/*@only@*/ node n)
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) */
27 } /* okay */