diff src/data.c @ 1992:4529ff71e646

[xemacs-hg @ 2004-04-07 02:20:12 by james] Fix --use-union-type breakage due to over-eager optimization.
author james
date Wed, 07 Apr 2004 02:20:14 +0000
parents 9c872f33ecbe
children cb7f3be19e9f
line wrap: on
line diff
--- a/src/data.c	Tue Apr 06 21:50:37 2004 +0000
+++ b/src/data.c	Wed Apr 07 02:20:14 2004 +0000
@@ -1995,10 +1995,7 @@
       switch (promote_args (&result, &other))
 	{
 	case FIXNUM_T:
-	  /* This looks evil, but it isn't.  The bits identifying the objects
-	     as fixnums will be present in both, so & will preserve them.
-	     The only bits possibly turned off are the actual data bits. */
-	  result &= other;
+	  result = make_int (XREALINT (result), XREALINT (other));
 	  break;
 	case BIGNUM_T:
 	  bignum_and (scratch_bignum, XBIGNUM_DATA (result),
@@ -2048,10 +2045,7 @@
       switch (promote_args (&result, &other))
 	{
 	case FIXNUM_T:
-	  /* This looks evil, but it isn't.  The bits identifying the objects
-	     as fixnums are the same in both, so | will preserve them.  The
-	     only bits possibly turned on are the actual data bits. */
-	  result |= other;
+	  result = make_int (XREALINT (result) | XREALINT (other));
 	  break;
 	case BIGNUM_T:
 	  bignum_ior (scratch_bignum, XBIGNUM_DATA (result),