64-unclean code in eval.c

Aidan Kehoe kehoea at parhasard.net
Fri Jun 1 18:32:15 EDT 2007


 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));
 }


-- 
On the quay of the little Black Sea port, where the rescued pair came once
more into contact with civilization, Dobrinton was bitten by a dog which was
assumed to be mad, though it may only have been indiscriminating. (Saki)



More information about the XEmacs-Beta mailing list