From db30dbfb004a6a7a9ad6e6987299a8400c1e3417 Mon Sep 17 00:00:00 2001 From: Raymond Pasco Date: Thu, 3 Mar 2016 17:10:16 -0500 Subject: [PATCH] Fix broken first-byte cases in ++lune Was broken when first byte was a newline, and when first byte was the only byte. --- jets/e/lune.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/jets/e/lune.c b/jets/e/lune.c index d8c8404ca4..ac2cb8afee 100644 --- a/jets/e/lune.c +++ b/jets/e/lune.c @@ -20,14 +20,26 @@ return u3m_error("noeol"); } + if (pos_w == 0) { + if (u3r_byte(0, lub) == 10) { + return u3nc(u3_nul, lin); + } else { + return u3m_error("noeol"); + } + } + while (--pos_w) { if (u3r_byte(pos_w, lub) == 10) { lin = u3nc(u3qc_cut(3, (pos_w + 1), (end_w - pos_w - 1), lub), lin); end_w = pos_w; - continue; } } + if (u3r_byte(pos_w, lub) == 10) { + return u3nc(u3_nul, + u3nc(u3qc_cut(3, pos_w, (end_w - pos_w), lub), lin)); + } + return u3nc(u3qc_cut(3, pos_w, (end_w - pos_w), lub), lin); } }