bug#62290: Error when handling invalid unicode with suspendable ports

Christopher Baines <[email protected]>
Newsgroups gmane.lisp.guile.bugs
Message-ID <[email protected]>
Here's a simple reproducer:

  (use-modules (ice-9 binary-ports)
               (ice-9 suspendable-ports)
               (rnrs bytevectors))

  (define (test)
    (let* ((sequence
             '(#xf4 #xa4 #xbd #xa4))
           (p (open-bytevector-input-port
               (u8-list->bytevector sequence))))
      (set-port-encoding! p "UTF-8")
      (set-port-conversion-strategy! p 'substitute)
      (peek (read-char p))))

  (test)

  (install-suspendable-ports!)

  (test)


If you run it, it outputs #\� as expected the first time, but then using
suspendable ports, it raises an exception. The behaviour should be the
same.


;;; (#\�)
Backtrace:
In ice-9/boot-9.scm:
  1752:10  8 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
           7 (apply-smob/0 #<thunk 7f3f09cbe300>)
In ice-9/boot-9.scm:
    724:2  6 (call-with-prompt ("prompt") #<procedure 7f3f09ccb320 …> …)
In ice-9/eval.scm:
    619:8  5 (_ #(#(#<directory (guile-user) 7f3f09cc1c80>)))
In ice-9/boot-9.scm:
   2836:4  4 (save-module-excursion #<procedure 7f3f09cb2300 at ice-…>)
  4388:12  3 (_)
In /home/chris/Projects/Guile/guile/bad-unicode.scm:
    12:10  2 (test)
In ice-9/suspendable-ports.scm:
   591:33  1 (read-char _)
   499:12  0 (peek-char-and-next-cur/utf8 _ _ _ _)

ice-9/suspendable-ports.scm:499:12: In procedure peek-char-and-next-cur/utf8:
In procedure integer->char: Argument 1 out of range: 1199972
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.