Index: sid/libguile/__scm.h =================================================================== --- sid.orig/libguile/__scm.h +++ sid/libguile/__scm.h @@ -386,21 +386,23 @@ #ifdef vms # ifndef CHEAP_CONTINUATIONS - typedef int jmp_buf[17]; - extern int setjump(jmp_buf env); - extern int longjump(jmp_buf env, int ret); -# define setjmp setjump -# define longjmp longjump + typedef int scm_jmp_buf[17]; + extern int setjump(scm_jmp_buf env); + extern int longjump(scm_jmp_buf env, int ret); +# define scm_setjmp setjump +# define scm_longjmp longjump +# define SCM_DEFINES_JMP_BUF # else # include # endif #else /* ndef vms */ # ifdef _CRAY1 - typedef int jmp_buf[112]; - extern int setjump(jmp_buf env); - extern int longjump(jmp_buf env, int ret); -# define setjmp setjump -# define longjmp longjump + typedef int scm_jmp_buf[112]; + extern int setjump(scm_jmp_buf env); + extern int longjump(scm_jmp_buf env, int ret); +# define scm_setjmp setjump +# define scm_longjmp longjump +# define SCM_DEFINES_JMP_BUF # else /* ndef _CRAY1 */ # if defined (__ia64__) /* For IA64, emulate the setjmp API using getcontext. */ @@ -409,15 +411,19 @@ typedef struct { ucontext_t ctx; int fresh; - } jmp_buf; -# define setjmp(JB) \ + } scm_jmp_buf; +# define scm_setjmp(JB) \ ( (JB).fresh = 1, \ getcontext (&((JB).ctx)), \ ((JB).fresh ? ((JB).fresh = 0, 0) : 1) ) -# define longjmp(JB,VAL) scm_ia64_longjmp (&(JB), VAL) - void scm_ia64_longjmp (jmp_buf *, int); +# define scm_longjmp(JB,VAL) scm_ia64_longjmp (&(JB), VAL) + void scm_ia64_longjmp (scm_jmp_buf *, int); +# define SCM_DEFINES_JMP_BUF # else /* ndef __ia64__ */ # include + typedef jmp_buf scm_jmp_buf; +# define scm_setjmp setjmp +# define scm_longjmp longjmp # endif /* ndef __ia64__ */ # endif /* ndef _CRAY1 */ #endif /* ndef vms */ Index: sid/libguile/_scm.h =================================================================== --- sid.orig/libguile/_scm.h +++ sid/libguile/_scm.h @@ -60,6 +60,12 @@ #include #include "libguile/__scm.h" +#ifdef SCM_DEFINES_JMP_BUF +typedef scm_jmp_buf jmp_buf; +#define setjmp(JB) scm_setjmp(JB) +#define longjmp(JB,VAL) scm_longjmp(JB,VAL) +#endif + /* Include headers for those files central to the implementation. The rest should be explicitly #included in the C files themselves. */ #include "libguile/error.h" /* Everyone signals errors. */ Index: sid/libguile/continuations.h =================================================================== --- sid.orig/libguile/continuations.h +++ sid/libguile/continuations.h @@ -43,7 +43,7 @@ typedef struct { SCM throw_value; - jmp_buf jmpbuf; + scm_jmp_buf jmpbuf; SCM dynenv; #ifdef __ia64__ void *backing_store; Index: sid/libguile/threads.h =================================================================== --- sid.orig/libguile/threads.h +++ sid/libguile/threads.h @@ -107,7 +107,7 @@ /* For keeping track of the stack and registers. */ SCM_STACKITEM *base; SCM_STACKITEM *top; - jmp_buf regs; + scm_jmp_buf regs; #ifdef __ia64__ void *register_backing_store_base; scm_t_contregs *pending_rbs_continuation;