mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 03:30:27 +02:00
Invalid charset at EOF does not cause decoding error
* libguile/ports.c (peek_iconv_codepoint): If the input has no bytes, there's little point in raising a decoding error here. Therefore remove the needless iconv acquisition, harmonising with suspendable-ports. * test-suite/tests/ports.test ("port-encoding"): Update test to include some input so that the exception gets raised.
This commit is contained in:
parent
c802ed4832
commit
5ea8c69e91
2 changed files with 3 additions and 10 deletions
|
@ -1,4 +1,4 @@
|
|||
/* Copyright 1995-2001,2003-2004,2006-2019
|
||||
/* Copyright 1995-2001,2003-2004,2006-2019,2021
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of Guile.
|
||||
|
@ -1948,14 +1948,7 @@ peek_iconv_codepoint (SCM port, SCM *buf, size_t *cur, size_t *len)
|
|||
*len = input_size;
|
||||
if (input_size == 0)
|
||||
/* Normal EOF. */
|
||||
{
|
||||
/* Make sure iconv descriptors have been opened even if
|
||||
there were no bytes, to be sure that a decoding error
|
||||
is signalled if the encoding itself was invalid. */
|
||||
scm_port_acquire_iconv_descriptors (port, NULL, NULL);
|
||||
scm_port_release_iconv_descriptors (port);
|
||||
return EOF;
|
||||
}
|
||||
return EOF;
|
||||
|
||||
/* EOF found in the middle of a multibyte character. */
|
||||
if (scm_is_eq (SCM_PORT (port)->conversion_strategy,
|
||||
|
|
|
@ -1314,7 +1314,7 @@
|
|||
|
||||
(pass-if-exception "set-port-encoding!, wrong encoding"
|
||||
exception:miscellaneous-error
|
||||
(let ((p (open-input-string "")))
|
||||
(let ((p (open-input-string "q")))
|
||||
(set-port-encoding! p "does-not-exist")
|
||||
(read p)))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue