diff --git a/7.3.150 b/7.3.150 new file mode 100644 index 0000000..83a8bf2 --- /dev/null +++ b/7.3.150 @@ -0,0 +1,113 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.150 +Fcc: outbox +From: Bram Moolenaar +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 + + +*** ../vim-7.3.149/src/eval.c 2011-03-27 16:03:09.000000000 +0200 +--- src/eval.c 2011-04-01 16:06:04.000000000 +0200 +*************** +*** 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 + { +*** ../vim-7.3.149/src/version.c 2011-04-01 15:33:54.000000000 +0200 +--- src/version.c 2011-04-01 16:04:42.000000000 +0200 +*************** +*** 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 ///