| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.150 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.3.150 |
| Problem: readline() does not return the last line when the NL is missing. |
| (Hong Xu) |
| Solution: When at the end of the file Also check for a previous line. |
| Files: src/eval.c |
| |
| |
| |
| |
| |
| *** 14305,14313 **** |
| { |
| if (buf[filtd] == '\n' || readlen <= 0) |
| { |
| ! /* Only when in binary mode add an empty list item when the |
| ! * last line ends in a '\n'. */ |
| ! if (!binary && readlen == 0 && filtd == 0) |
| break; |
| |
| /* Found end-of-line or end-of-file: add a text line to the |
| --- 14305,14313 ---- |
| { |
| if (buf[filtd] == '\n' || readlen <= 0) |
| { |
| ! /* In binary mode add an empty list item when the last |
| ! * non-empty line ends in a '\n'. */ |
| ! if (!binary && readlen == 0 && filtd == 0 && prev == NULL) |
| break; |
| |
| /* Found end-of-line or end-of-file: add a text line to the |
| |
| *** 14372,14396 **** |
| |
| if (tolist == 0) |
| { |
| ! /* "buf" is full, need to move text to an allocated buffer */ |
| ! if (prev == NULL) |
| { |
| ! prev = vim_strnsave(buf, buflen); |
| ! prevlen = buflen; |
| ! } |
| ! else |
| ! { |
| ! s = alloc((unsigned)(prevlen + buflen)); |
| ! if (s != NULL) |
| { |
| ! mch_memmove(s, prev, prevlen); |
| ! mch_memmove(s + prevlen, buf, buflen); |
| ! vim_free(prev); |
| ! prev = s; |
| ! prevlen += buflen; |
| } |
| } |
| - filtd = 0; |
| } |
| else |
| { |
| --- 14372,14399 ---- |
| |
| if (tolist == 0) |
| { |
| ! if (buflen >= FREAD_SIZE / 2) |
| { |
| ! /* "buf" is full, need to move text to an allocated buffer */ |
| ! if (prev == NULL) |
| ! { |
| ! prev = vim_strnsave(buf, buflen); |
| ! prevlen = buflen; |
| ! } |
| ! else |
| { |
| ! s = alloc((unsigned)(prevlen + buflen)); |
| ! if (s != NULL) |
| ! { |
| ! mch_memmove(s, prev, prevlen); |
| ! mch_memmove(s + prevlen, buf, buflen); |
| ! vim_free(prev); |
| ! prev = s; |
| ! prevlen += buflen; |
| ! } |
| } |
| + filtd = 0; |
| } |
| } |
| else |
| { |
| |
| |
| |
| *** 716,717 **** |
| --- 716,719 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 150, |
| /**/ |
| |
| -- |
| ARTHUR: What are you going to do. bleed on me? |
| "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ an exciting new programming language -- http://www.Zimbu.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |