The setjmp()
macro should be invoked from only one of the contexts listed in §7Section 7.13.1.1 of of the C Standard [ISO/IEC 9899:2011]. Invoking setjmp()
outside of one of these contexts results in undefined behavior. (See undefined behavior 125.)
After invoking longjmp()
, non–volatile-qualified local objects should not be accessed if their values could have changed since the invocation of setjmp()
. Their value in this case is considered indeterminate, and accessing them is undefined behavior. (See undefined behaviors 127 and 10.)
...