From d41668faec7b6a7b6e91e5056098ce98b9c21ff8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 17 Oct 2007 21:56:10 +0000 Subject: [PATCH] Changes from arch/CVS synchronization --- ChangeLog | 4 ++++ NEWS | 8 ++++++++ libguile/ChangeLog | 6 ++++++ libguile/read.c | 7 +++---- test-suite/ChangeLog | 5 +++++ test-suite/tests/reader.test | 6 +++++- 6 files changed, 31 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index de8fac559..fb211a22f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-10-17 Ludovic Courtès + + * NEWS: Mention reader bug-fix. + 2007-10-16 Ludovic Courtès Guile 1.8.3 released. diff --git a/NEWS b/NEWS index 70d6fe699..41e5c17c9 100644 --- a/NEWS +++ b/NEWS @@ -31,6 +31,14 @@ This slightly improves program startup times. ** Functions for handling `scm_option' now no longer require an argument indicating length of the `scm_t_option' array. + + +Changes in 1.8.4 (since 1.8.3) + +* Bugs fixed + +** CR (ASCII 0x0d) is (again) recognized as a token delimiter by the reader + Changes in 1.8.3 (since 1.8.2) diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 4990216c7..4a1ff3536 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,9 @@ +2007-10-17 Ludovic Courtès + + * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a + regression compared to 1.8.2. Reported by Puneet + . + 2007-10-10 Ludovic Courtès * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check diff --git a/libguile/read.c b/libguile/read.c index d1013c586..53715f2b5 100644 --- a/libguile/read.c +++ b/libguile/read.c @@ -150,7 +150,7 @@ static SCM *scm_read_hash_procedures; /* `isblank' is only in C99. */ #define CHAR_IS_BLANK_(_chr) \ (((_chr) == ' ') || ((_chr) == '\t') || ((_chr) == '\n') \ - || ((_chr) == '\f')) + || ((_chr) == '\f') || ((_chr) == '\r')) #ifdef MSDOS # define CHAR_IS_BLANK(_chr) \ @@ -182,9 +182,8 @@ static SCM *scm_read_hash_procedures; /* Read an SCSH block comment. */ static inline SCM scm_read_scsh_block_comment (int chr, SCM port); -/* Helper function similar to `scm_read_token ()'. Read from PORT until a - whitespace is read. Return zero if the whole token could fit in BUF, - non-zero otherwise. */ +/* Read from PORT until a delimiter (e.g., a whitespace) is read. Return + zero if the whole token fits in BUF, non-zero otherwise. */ static inline int read_token (SCM port, char *buf, size_t buf_size, size_t *read) { diff --git a/test-suite/ChangeLog b/test-suite/ChangeLog index 2a84350c8..5f76ba76a 100644 --- a/test-suite/ChangeLog +++ b/test-suite/ChangeLog @@ -1,3 +1,8 @@ +2007-10-17 Ludovic Courtès + + * tests/reader.test (reading)[CR recognized as a token + delimiter]: New test. + 2007-10-10 Ludovic Courtès * standalone/test-conversion.c: Include where diff --git a/test-suite/tests/reader.test b/test-suite/tests/reader.test index 7f24aa695..d6047a2d3 100644 --- a/test-suite/tests/reader.test +++ b/test-suite/tests/reader.test @@ -84,7 +84,11 @@ (pass-if "unprintable symbol" ;; The reader tolerates unprintable characters for symbols. (equal? (string->symbol "\001\002\003") - (read-string "\001\002\003")))) + (read-string "\001\002\003"))) + + (pass-if "CR recognized as a token delimiter" + ;; In 1.8.3, character 0x0d was not recognized as a delimiter. + (equal? (read-string "one\x0dtwo") 'one))) (pass-if-exception "radix passed to number->string can't be zero"