(using Splint 3.0.1.6) I know some people find gotos to be heresy, but still, I reckon they're a good way of getting an approximation to exception handling without the performance hit (or using C++!)
This code snippet: *trc = nc ; /* Line 568 */ return TRUE ; FAIL: free( nc ) ; /* Line 574 */ *trc = NULL ; return FALSE ; gives the warning: blah.c(574): Kept storage nc passed as only param: free (nc) storage is transferred to a non-temporary reference after being passed as keep parameter. The storage may be released or new aliases created. (Use -kepttrans to inhibit warning) blah.c(568): Storage nc becomes kept Now there's no way line 574 can be executed in the same call as line 568, so I'd say this was a bug. What do you think? Jon