summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2020-04-09 12:20:24 +0300
committerEli Zaretskii <eliz@gnu.org>2020-04-09 12:20:24 +0300
commit20eb4247cdc2eeada43c3de8abf9c577be38c98f (patch)
tree677cbf525a8028236e54fb01daaa141495af93dd
parentfaf996dc6e963a8dd74e9e794ded0467dd78ea18 (diff)
downloademacs-20eb4247cdc2eeada43c3de8abf9c577be38c98f.tar.gz
emacs-20eb4247cdc2eeada43c3de8abf9c577be38c98f.tar.bz2
emacs-20eb4247cdc2eeada43c3de8abf9c577be38c98f.zip
Fix decoding of ASCII strings with embedded CR characters
* src/coding.c (string_ascii_p): Return a negative value if an all-ASCII string STR includes the CR character, otherwise a positive value. (code_convert_string): If the string is ASCII, but includes CR characters, use the fast path only if EOL doesn't need to be decoded. (Bug#40519) * test/src/coding-tests.el (coding-nocopy-ascii): Add more tests for bug#40519.
-rw-r--r--src/coding.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/coding.c b/src/coding.c
index 24a832ff3ee..c24c70c0899 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -9471,7 +9471,7 @@ not fully specified.) */)
return code_convert_region (start, end, coding_system, destination, 1, 0);
}
-/* Non-zero if STR contains only characterss in the 0..127 range.
+/* Non-zero if STR contains only characters in the 0..127 range.
Positive if STR includes characters that don't need EOL conversion
on decoding, negative otherwise. */
static int
@@ -9523,7 +9523,7 @@ code_convert_string (Lisp_Object string, Lisp_Object coding_system,
if (EQ (dst_object, Qt))
{
/* Fast path for ASCII-only input and an ASCII-compatible coding:
- act as identity. */
+ act as identity if no EOL conversion is neede. */
int ascii_p;
Lisp_Object attrs = CODING_ID_ATTRS (coding.id);
if (! NILP (CODING_ATTR_ASCII_COMPAT (attrs))