Hi,
I've committed a patch that allows for 48-bit fixnums on 64-bit platforms.
Noteworthy changes:
- a new integer type 'uintV' that is the smallest integer type that can
accomodate a nonnegative fixnum's value. Either uint32 or uint64.
- posfixnum_to_L is gone. More precisely, it's replaced with posfixnum_to_V,
which returns a n uintV.
- In modules like rawsock or bdb, it is now a BUG to write
unsigned int foo = posfixnum_to_V(check_posfixnum(STACK_0));
because that would cause values between 2^32 and most-positive-fixnum
to be accepted but to be truncated. As a replacement, use
unsigned int foo = I_to_uint(check_uint(STACK_0));
Bruno

On 13 May 2005, at 17:50, Sam Steingold wrote:
>> * Pascal Costanza <cp@...> [2005-05-13 15:51:31 +0200]:
>> ...and clisp still just quits when started.
>>
>
> except that you do not have one :-(
> set a breakpoint in main and step through to see why you quit.
>
> one hypothesis to be checked is that CLISP might quit because
> *standard-input* is for some reason invalid.
> specifically, look at init_streamvars() and make sure that it _does_
> create __OPEN__ streams (and see if they somehow get closed later).
> (use the zout gdb macro to print variables, print STACK using
> (gdb) zout STACK[-1]
> for STACK_0 and
> (gdb) zout STACK[-5]
> for STACK_4 -- you got the point.)
I am not a C programmer and have never used gdb and the likes.
Therefore, it seems to me that this would take too much time.
Hence, I have taken another route: I have tried to identify when the
problem was introduced in the CVS repository. (2.33.2 works fine on
my machine.) I have been able to narrow this down to a time span of
30 minutes.
When I check out cvs -z3 -d:pserver:anonymous@...:/
cvsroot/clisp co -D "2004-11-01 11:00 UTC" -P clisp, clisp runs just
fine, but when I check out cvs -z3 -
d:pserver:anonymous@...:/cvsroot/clisp co -D
"2004-11-01 11:30 UTC" -P clisp, clisp quits immediately when started.
The differences between those two points in time can be investigated
with cvs diff -D "2004-11-01 11:00 UTC" -D "2004-11-01 11:30 UTC".
The change that poll() is preferred over select() looks suspicious to
me (but of coures, I am just guessing). What do I do to test this in
the current version? That is, how do I make clisp prefer select()
over poll()? (Sorry if this question sounds stupid...)
Any other idea?
Thanks,
Pascal
--
2nd European Lisp and Scheme Workshop
July 26 - Glasgow, Scotland - co-located with ECOOP 2005
http://lisp-ecoop05.bknr.net/