Subject: weirdness w/ uniform-vector-read! compat

From: Thien-Thi Nguyen <[email-masked]>
Date: Fri, 13 Sep 2013 17:49:56 +0200

Proc ‘uniform-vector-read!’ is deprecated (ugh), and its implementation
rebased onto ‘(rnrs io ports) get-bytevector-n!’.  Unfortunately, there
seems to be a glitch in the arg shuffling.  Here is /tmp/foo.scm:

and here is a series of invocations that demonstrate the discrepency
between ‘get-bytevector-n!’ (ok) and ‘uniform-vector-read!’ (ko):

set -x ; guile --version ; guile -s foo.scm ; guile -s foo.scm ok ; guile -s foo.scm ko
+ guile --version
guile (GNU Guile) 2.0.9
Copyright (C) 2013 Free Software Foundation, Inc.

License LGPLv3+: GNU LGPL 3 or later <http://gnu.org/licenses/lgpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
+ guile -s foo.scm
uve: #s16(0) (2)
uve: #s16(0)
+ guile -s foo.scm ok
uve: #s16(0) (2)
uve: #s16(10794)
+ guile -s foo.scm ko
uve: #s16(0) (2)
`uniform-vector-read!' is deprecated. Use `get-bytevector-n!' from
`(rnrs io ports)' instead.
Backtrace:
In ice-9/boot-9.scm:
 157: 11 [catch #t #<catch-closure 8347f30> ...]
In unknown file:
   ?: 10 [apply-smob/1 #<catch-closure 8347f30>]
In ice-9/boot-9.scm:
  63: 9 [call-with-prompt prompt0 ...]
In ice-9/eval.scm:
 432: 8 [eval # #]
In ice-9/boot-9.scm:
2320: 7 [save-module-excursion #<procedure 8275ea0 at ice-9/boot-9.scm:3961:3 ()>]
3968: 6 [#<procedure 8275ea0 at ice-9/boot-9.scm:3961:3 ()>]
1645: 5 [%start-stack load-stack ...]
1650: 4 [#<procedure 83489c0 ()>]
In unknown file:
   ?: 3 [primitive-load "/tmp/foo.scm"]
   ?: 2 [call-with-input-string "****" ...]
In ice-9/eval.scm:
 432: 1 [eval # #]
In unknown file:
   ?: 0 [uniform-vector-read! #s16(0) #<input: string 8263d20> ...]

ERROR: In procedure uniform-vector-read!:
ERROR: In procedure get-bytevector-n!: Value out of range: 4

FWIW, Guile 1.8.8 produces same output as ‘ok’ on a similar (sans the
‘use-modules’ and ‘uniform-vector-element-size’ noise) input, so i think
this situation is a regression.  Am i missing something?

-- 
Thien-Thi Nguyen
   GPG key: 4C807502
   (if you're human and you know it)
      read my lisp: (responsep (questions 'technical)
                               (not (via 'mailing-list)))
                     => nil