[Larceny-users] error peeking short values from raw memory
    Felix Klock 
    felixluser at pnkfx.org
       
    Fri Jul  3 14:46:23 EDT 2009
    
    
  
Marco-
On Jul 3, 2009, at 2:28 PM, Marco Maggi wrote:
> "Felix Klock" wrote:
>> Why  are   you  subtracting   2  here  when   you've  been
>> subtracting 1 in all the other cases?
>
> The form producing buggy output is:
>
>> (let ((v (- (expt 2 15) 1)))
>> (%poke16 a v)
>> (write (list v (%peek16 a)))
>> (newline))
>
> which prints (32767 -32769)  where I expected (32767 32767).
> This one:
>
>> (let ((v (- (expt 2 15) 2)))
>> (%poke16 a v)
>> (write (list v (%peek16 a)))
>> (newline))
>
> correctly prints  (32766 32766), I included it  to show that
> the problem is only with 2^15-1.
Ah, I understand now.  I did not read all the output you had included  
carefully enough.
This looks like a fence-post error in the definition of %get16 in lib/ 
Base/std-ffi.sch to me, especially if one compares it to %get32  
immediately following...
-Felix
    
    
More information about the Larceny-users
mailing list