Albert Chin <guile-de...@mlists.thewrittenword.com> writes:

> libguile/__scm.h has:
> #  if defined (__ia64__)
> /* For IA64, emulate the setjmp API using getcontext. */
> #   include <signal.h>
> #   include <ucontext.h>
>     typedef struct {
>       ucontext_t ctx;
>       int fresh;
>     } jmp_buf;
> #   define 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);
>
> But, on HP-UX/IA64, <setjmp.h> has a conflicting declaration of jmp_buf.

Thanks for the report.  This is also a Debian bug [1], and their patch
is [2].

[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=506684
[2] 
http://patch-tracking.debian.net/patch/series/view/guile-1.8/1.8.5+1-4.1/dont-redefine-jmp_buf.diff

I will work on this soon.  I expect my fix to be similar to Debian's -
i.e. introducing scm_jmp_buf, scm_setjmp and scm_longjmp - but not
identical.

Regards,
        Neil


Reply via email to