_longjmp(3C)




NAME

     _longjmp, _setjmp - non-local goto


SYNOPSIS

     #include <setjmp.h>

     void _longjmp(jmp_buf env, int val);

     int _setjmp(jmp_buf env);


DESCRIPTION

     The _longjmp() and  _setjmp()  functions  are  identical  to
     longjmp(3C)  and  setjmp(3C),  respectively,  with the addi-
     tional restriction that  _longjmp()  and  _setjmp()  do  not
     manipulate the signal mask.

     If _longjmp() is called even though env was  never  initial-
     ized  by a call to _setjmp(), or when the last such call was
     in a function that has since returned, the results are unde-
     fined.


RETURN VALUES

     Refer to longjmp(3C) and setjmp(3C).


ERRORS

     No errors are defined.


USAGE

     If _longjmp() is  executed  and  the  environment  in  which
     _setjmp()  was  executed no longer exists, errors can occur.
     The conditions under which the environment of the  _setjmp()
     no  longer exists include exiting the function that contains
     the _setjmp() call, and exiting an  inner  block  with  tem-
     porary  storage.  This condition might not be detectable, in
     which case the _longjmp() occurs and, if the environment  no
     longer  exists,  the contents of the temporary storage of an
     inner block are unpredictable.  This  condition  might  also
     cause  unexpected  process  termination. If the function has
     returned, the results are undefined.

     Passing longjmp() a pointer  to  a  buffer  not  created  by
     setjmp(),  passing  _longjmp()  a  pointer  to  a buffer not
     created by _setjmp(), passing siglongjmp(3C) a pointer to  a
     buffer  not created by sigsetjmp(3C) or passing any of these
     three functions a buffer that has been modified by the  user
     can cause all the problems listed above, and more.

     The _longjmp() and _setjmp() functions are included to  sup-
     port  programs written to historical system interfaces.  New
     applications should  use  siglongjmp(3C)  and  sigsetjmp(3C)
     respectively.


SEE ALSO

     longjmp(3C), setjmp(3C), siglongjmp(3C), sigsetjmp(3C)


Man(1) output converted with man2html