mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-21 03:00:19 +02:00
Fix `setvbuf' to leave the line/column number unchanged.
* libguile/fports.c (scm_setvbuf): Use `scm_take_from_input_buffers' directly instead of `scm_drain_input'; use `scm_unget_byte' instead of `scm_unread_string' to put the drained input back to PORT. This leaves PORT's line/column numbers unchanged, whereas they'd previously be decreased by the `scm_unread_string' call. * libguile/ports.c (scm_take_from_input_buffers): Update description and variable names to refer to "bytes", not "chars". * test-suite/tests/ports.test ("setvbuf"): New test prefix.
This commit is contained in:
parent
0eba699d12
commit
e8b21eecb1
3 changed files with 55 additions and 14 deletions
|
@ -2,7 +2,7 @@
|
|||
;;;; Jim Blandy <jimb@red-bean.com> --- May 1999
|
||||
;;;;
|
||||
;;;; Copyright (C) 1999, 2001, 2004, 2006, 2007, 2009, 2010,
|
||||
;;;; 2011 Free Software Foundation, Inc.
|
||||
;;;; 2011, 2012 Free Software Foundation, Inc.
|
||||
;;;;
|
||||
;;;; This library is free software; you can redistribute it and/or
|
||||
;;;; modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -1064,6 +1064,29 @@
|
|||
(list read read-char read-line)
|
||||
'("read" "read-char" "read-line")))
|
||||
|
||||
|
||||
|
||||
(with-test-prefix "setvbuf"
|
||||
|
||||
(pass-if "line/column number preserved"
|
||||
;; In Guile 2.0.5, `setvbuf' would erroneously decrease the port's
|
||||
;; line and/or column number.
|
||||
(call-with-output-file (test-file)
|
||||
(lambda (p)
|
||||
(display "This is GNU Guile.\nWelcome." p)))
|
||||
(call-with-input-file (test-file)
|
||||
(lambda (p)
|
||||
(and (eq? #\T (read-char p))
|
||||
(let ((line (port-line p))
|
||||
(col (port-column p)))
|
||||
(and (= line 0) (= col 1)
|
||||
(begin
|
||||
(setvbuf p _IOFBF 777)
|
||||
(let ((line* (port-line p))
|
||||
(col* (port-column p)))
|
||||
(and (= line line*)
|
||||
(= col col*)))))))))))
|
||||
|
||||
(delete-file (test-file))
|
||||
|
||||
;;; Local Variables:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue