From: Sam S. <sd...@gn...> - 2001-09-21 18:10:46
|
> * In message <20010921170920.2.RETI@RAINIER-VLM.AI.MIT.EDU> > * On the subject of "Re: [clisp-list] Problems compiling clisp 2.27 for Tru64 5.1 on Alpha using cc" > * Sent on Fri, 21 Sep 2001 13:09 -0400 > * Honorable re...@ai... writes: > > [mailing list removed] please do not do that because mailing lists are archived and my personal mail is not. > (loop for size from 2 to 40 do (handler-case (bin-stream-test :size size :type'signed-byte) (error (e) (format t "~&Case ~d got error ~a" size e)))) > > and got this result: > > Case 2 got error > * [(SIGNED-BYTE 2)] -10 != 1.70139s38 you also got errors until case 35, i.e., bignums are broken too. > The problem appears to be in the following code from the rd_by_iu_I routine in stream.d/c: > > return negfixnum(wbitm(intLsize)+(oint)wert); > > The wbitm appears to be adding 0x100000000 to the correct signed C > value in wert, and then negfixnum is adding that to 0x4200000000 to > produce 0x44xxxxxxxx. If I change it back to 0x43xxxxxxxx, I get the > right answer, so whatever bit 0x100000000 is (the mark bit?), it is > erroneously getting added in twice apparently changing the type code. interesting. what if you replace the line with return negfixnum((oint)wert); what does "make check" say? thanks. -- Sam Steingold (http://www.podval.org/~sds) Support Israel's right to defend herself! <http://www.i-charity.com/go/israel> Read what the Arab leaders say to their people on <http://www.memri.org/> OK, so you're a Ph.D. Just don't touch anything. |