node/lib/internal/readline
Ian Harris 9decb70d05
readline: fix issue with newline-less last line
The logic for reading lines was slightly flawed, in that it assumed
there would be a final new line. It handled the case where there are no
new lines, but this then broke if there were some new lines.

The fix in logic is basically removing the special case where there are
no new lines by changing it to always read the final line with no new
lines. This works because if a file contains no new lines, the final
line is the first line, and all is well.

There is some subtlety in this functioning, however. If the last line
contains no new lines, then `lastIndex` will be the start of the last
line, and `kInsertString` will be called from that point. If it does
contain a new line, `lastIndex` will be equal to `s.length`, so the
slice will be the empty string.

Fixes: https://github.com/nodejs/node/issues/47305
PR-URL: https://github.com/nodejs/node/pull/47317
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
2023-04-14 10:12:16 +00:00
..
callbacks.js lib: replace validator and error 2022-02-05 08:36:48 -08:00
emitKeypressEvents.js readline: refactor Interface to ES2015 class 2021-09-16 23:16:34 +02:00
interface.js readline: fix issue with newline-less last line 2023-04-14 10:12:16 +00:00
promises.js readline: add autoCommit option 2021-09-16 23:16:46 +02:00
utils.js lib: enforce use of trailing commas in more files 2023-02-16 18:47:24 +01:00