With this snippet of code and +standard settings:

320>      while ( a != NULL ) {
321>        foo *temp = a->p ;
322>        a->p = NULL ;
323>        f( a ) ;
324>        a = temp ;
325>      }

I get this error, which might be considered wrong:

.\blah.c(325): Clauses exit with a referencing implicitly only storage
  in while body, local storage if loop is not taken. The state of a
  variable is different depending on which branch is taken. This means
  no annotation can sensibly be applied to the storage. (-branchstate
  will suppress message) .\blah.c(325): Storage a becomes implicitly
  only

The thing is, it might be implicitly only after the loop, but it's
also, by definition, free (NULL) :->

Jon

Reply via email to