I don't think there's actually a problem here, if we *do* longjmp we set rc to a new value immediately after... but in any case this works, and the cost of volatile is not too high.