mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-02 13:00:26 +02:00
Fixed some bugs that are due to the fact that SCM is a void* now.
Cleaned up a macro definition. Thanks to Dale P. Smith for both of these patches.
This commit is contained in:
parent
1ff2fa6e1a
commit
f81e080b24
3 changed files with 22 additions and 11 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2000-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
||||||
|
|
||||||
|
* numbers.h (SCM_SETNUMDIGS): Use SCM_BIGSIZEFIELD macro for
|
||||||
|
shifting, not constant. Thanks to Dale P. Smith.
|
||||||
|
|
||||||
|
* numbers.c (scm_sum, scm_difference): Don't test a SCM value
|
||||||
|
for being less than zero. Decode it to a C value first. Again,
|
||||||
|
thank you Dale.
|
||||||
|
|
||||||
2000-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
2000-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
||||||
|
|
||||||
* numbers.h, ramap.c, struct.h, vectors.h: Don't use SCM2PTR for
|
* numbers.h, ramap.c, struct.h, vectors.h: Don't use SCM2PTR for
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Copyright (C) 1995,1996,1997,1998,1999,2000 Free Software Foundation, Inc.
|
/* Copyright (C) 1995,1996,1997,1998,1999,2000 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation; either version 2, or (at your option)
|
* the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
@ -3426,16 +3426,17 @@ scm_sum (SCM x, SCM y)
|
||||||
{
|
{
|
||||||
intbig:
|
intbig:
|
||||||
{
|
{
|
||||||
|
long i = SCM_INUM (x);
|
||||||
# ifndef SCM_DIGSTOOBIG
|
# ifndef SCM_DIGSTOOBIG
|
||||||
long z = scm_pseudolong (SCM_INUM (x));
|
long z = scm_pseudolong (i);
|
||||||
return scm_addbig ((SCM_BIGDIG *) & z,
|
return scm_addbig ((SCM_BIGDIG *) & z,
|
||||||
SCM_DIGSPERLONG,
|
SCM_DIGSPERLONG,
|
||||||
(x < 0) ? SCM_BIGSIGNFLAG : 0,
|
(i < 0) ? SCM_BIGSIGNFLAG : 0,
|
||||||
y, 0);
|
y, 0);
|
||||||
# else /* SCM_DIGSTOOBIG */
|
# else /* SCM_DIGSTOOBIG */
|
||||||
SCM_BIGDIG zdigs[SCM_DIGSPERLONG];
|
SCM_BIGDIG zdigs[SCM_DIGSPERLONG];
|
||||||
scm_longdigs (SCM_INUM (x), zdigs);
|
scm_longdigs (i, zdigs);
|
||||||
return scm_addbig (zdigs, SCM_DIGSPERLONG, (x < 0) ? SCM_BIGSIGNFLAG : 0,
|
return scm_addbig (zdigs, SCM_DIGSPERLONG, (i < 0) ? SCM_BIGSIGNFLAG : 0,
|
||||||
y, 0);
|
y, 0);
|
||||||
# endif /* SCM_DIGSTOOBIG */
|
# endif /* SCM_DIGSTOOBIG */
|
||||||
}
|
}
|
||||||
|
@ -3580,15 +3581,16 @@ scm_difference (SCM x, SCM y)
|
||||||
SCM_ASRTGO (SCM_NIMP (y), bady);
|
SCM_ASRTGO (SCM_NIMP (y), bady);
|
||||||
if (SCM_BIGP (y))
|
if (SCM_BIGP (y))
|
||||||
{
|
{
|
||||||
|
long i = SCM_INUM (x);
|
||||||
#ifndef SCM_DIGSTOOBIG
|
#ifndef SCM_DIGSTOOBIG
|
||||||
long z = scm_pseudolong (SCM_INUM (x));
|
long z = scm_pseudolong (i);
|
||||||
return scm_addbig ((SCM_BIGDIG *) & z, SCM_DIGSPERLONG,
|
return scm_addbig ((SCM_BIGDIG *) & z, SCM_DIGSPERLONG,
|
||||||
(x < 0) ? SCM_BIGSIGNFLAG : 0,
|
(i < 0) ? SCM_BIGSIGNFLAG : 0,
|
||||||
y, SCM_BIGSIGNFLAG);
|
y, SCM_BIGSIGNFLAG);
|
||||||
#else
|
#else
|
||||||
SCM_BIGDIG zdigs[SCM_DIGSPERLONG];
|
SCM_BIGDIG zdigs[SCM_DIGSPERLONG];
|
||||||
scm_longdigs (SCM_INUM (x), zdigs);
|
scm_longdigs (i, zdigs);
|
||||||
return scm_addbig (zdigs, SCM_DIGSPERLONG, (x < 0) ? SCM_BIGSIGNFLAG : 0,
|
return scm_addbig (zdigs, SCM_DIGSPERLONG, (i < 0) ? SCM_BIGSIGNFLAG : 0,
|
||||||
y, SCM_BIGSIGNFLAG);
|
y, SCM_BIGSIGNFLAG);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -263,7 +263,7 @@
|
||||||
SCM_SETCAR (x, \
|
SCM_SETCAR (x, \
|
||||||
scm_tc16_big \
|
scm_tc16_big \
|
||||||
| ((sign) ? SCM_BIGSIGNFLAG : 0) \
|
| ((sign) ? SCM_BIGSIGNFLAG : 0) \
|
||||||
| (((v) + 0L) << 17)) \
|
| (((v) + 0L) << SCM_BIGSIZEFIELD))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue