typedef struct _node *node; struct _node { int val; /*@null@*/ node next; } void node_free1 (/*@only@*/ node n) { free (n); /* error: must free n->next */ } void node_free2 (/*@only@*/ node n) { node nn = n->next; free (n); /* okay */ } /* error: must free nn */ void node_free3 (/*@only@*/ node n) { node nn = n->next; free (n); /* okay */ node_free1 (nn); /* possibly null error */ } /* okay */