diff --git a/CHANGELOG.md b/CHANGELOG.md index dcbece7c..e177f728 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ Features Bug Fixes -- Fix `read-line` to remove trailing newlines. Thanks to wasamasa for the bug report! +- Fix `read-line` to remove trailing carriage return and/or newline characters. Thanks to wasamasa for the bug report! ## 0.6.2 - August 25, 2017 diff --git a/runtime.c b/runtime.c index 1bb96c00..8823fdb3 100644 --- a/runtime.c +++ b/runtime.c @@ -6185,11 +6185,12 @@ object Cyc_io_read_line(void *data, object cont, object port) if (fgets(buf, 1023, stream) != NULL) { len = strlen(buf); { - // Remove trailing newline - if (len > 0 && buf[len - 1] == '\n') { + // Remove any trailing CR / newline chars + while (len > 0 && (buf[len - 1] == '\n' || + buf[len - 1] == '\r')) { len--; - buf[len] = '\0'; } + buf[len] = '\0'; make_string_noalloc(s, buf, len); return_thread_runnable(data, &s); }