64-unclean code in eval.c

David Kastrup dak at gnu.org
Sat Jun 2 02:02:37 EDT 2007


Aidan Kehoe <kehoea at parhasard.net> writes:

>  Ar an chéad lá de mí Meitheamh, scríobh Aidan Kehoe: 
>
>  > The functions are used ultimately by internal_bind_int and the
>  > corresponding unbinding code; the C integers bound are
>  > entering_debugger, in_warnings and inhibit_flags. The below
>  > should fix things, if I understand things correctly; no need to
>  > change record_unwind_protect_restoring_int, since
>  > NUMBER_FITS_IN_AN_EMACS_INT on an integer value will always be
>  > true on AMD64.
>
> Still, changing it is clearer:
>
> --- eval.c~	2007-06-01 04:24:21.000000000 +0200
> +++ eval.c	2007-06-02 00:31:01.000000000 +0200
> @@ -6011,11 +6011,13 @@
>  
>    if (INTP (lval))
>      val = XINT (lval);
> -  else
> +#if SIZEOF_EMACS_INT <= SIZEOF_INT
> +  else 
>      {
>        val = (int) get_opaque_ptr (lval);
>        free_opaque_ptr (lval);
>      }
> +#endif
>  
>    *addr = val;
>    free_opaque_ptr (opaque);
> @@ -6034,7 +6036,7 @@
>  
>    if (NUMBER_FITS_IN_AN_EMACS_INT (val))
>      lval = make_int (val);
> -  else
> +  else if (SIZEOF_EMACS_INT <= SIZEOF_INT)
>      lval = make_opaque_ptr ((void *) val);
>    return record_unwind_protect (restore_int, noseeum_cons (opaque, lval));
>  }

This mixture of preprocessing conditionals and C level conditionals
appears inconsistent.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum



More information about the XEmacs-Beta mailing list