Avoid clash with system setjmp/longjmp on IA64
authorNeil Jerram <neil@ossau.uklinux.net>
Wed, 5 Aug 2009 15:13:28 +0000 (16:13 +0100)
committerNeil Jerram <neil@ossau.uklinux.net>
Fri, 21 Aug 2009 22:29:08 +0000 (23:29 +0100)
commita4dbe1ac3dacf365263023c4fe1cd6ffb4a894b7
treec2ac7763ec1dd7ed02196ef1e4c29565a7b21683
parentd5ed380ec83a2f42cacc40697717679bf03e6857
Avoid clash with system setjmp/longjmp on IA64

Problem was that if an application includes both libguile.h and the
system's setjmp.h, and is compiled on IA64, it gets compile errors
because of jmp_buf, setjmp and longjmp being multiply defined.

* libguile/__scm.h (__ia64__): Define scm_i_jmp_buf, SCM_I_SETJMP and
  SCM_I_LONGJMP instead of jmp_buf, setjmp and longjmp.

  (all other platforms): Map scm_i_jmp_buf, SCM_I_SETJMP and
  SCM_I_LONGJMP to jmp_buf, setjmp and longjmp.

* libguile/continuations.c (scm_make_continuation): Use `SCM_I_SETJMP'
  instead of `setjmp'.
  (copy_stack_and_call): Use `SCM_I_LONJMP' instead of `longjmp'.
  (scm_ia64_longjmp): Use type `scm_i_jmp_buf' instead of `jmp_buf'.

* libguile/continuations.h (scm_t_contregs): Use type `scm_i_jmp_buf'
  instead of `jmp_buf'.

* libguile/threads.c (suspend): Use `SCM_I_SETJMP' instead of
  `setjmp'.

* libguile/threads.h (scm_i_thread): Use type `scm_i_jmp_buf' instead
  of `jmp_buf'.

* libguile/throw.c (JBJMPBUF, make_jmpbuf, jmp_buf_and_retval): Use
  type `scm_i_jmp_buf' instead of `jmp_buf'.
  (scm_c_catch): Use `SCM_I_SETJMP' instead of `setjmp'.
  (scm_ithrow): Use `SCM_I_LONGJMP' instead of `longjmp'.
libguile/__scm.h
libguile/continuations.c
libguile/continuations.h
libguile/threads.c
libguile/threads.h
libguile/throw.c