mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 11:40:18 +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.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of Guile.
|
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;
|
*len = input_size;
|
||||||
if (input_size == 0)
|
if (input_size == 0)
|
||||||
/* Normal EOF. */
|
/* 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. */
|
/* EOF found in the middle of a multibyte character. */
|
||||||
if (scm_is_eq (SCM_PORT (port)->conversion_strategy,
|
if (scm_is_eq (SCM_PORT (port)->conversion_strategy,
|
||||||
|
|
|
@ -1314,7 +1314,7 @@
|
||||||
|
|
||||||
(pass-if-exception "set-port-encoding!, wrong encoding"
|
(pass-if-exception "set-port-encoding!, wrong encoding"
|
||||||
exception:miscellaneous-error
|
exception:miscellaneous-error
|
||||||
(let ((p (open-input-string "")))
|
(let ((p (open-input-string "q")))
|
||||||
(set-port-encoding! p "does-not-exist")
|
(set-port-encoding! p "does-not-exist")
|
||||||
(read p)))
|
(read p)))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue