To: vim-dev@vim.org Subject: patch 7.1.043 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit ------------ Patch 7.1.043 Problem: In Ex mode using CTRL-D twice may cause a crash. Cursor isn't positioned properly after CTRL-D. Solution: Set prev_char properly. Position the cursor correctly. (Antony Scriven) Files: src/ex_getln.c *** ../vim-7.1.042/src/ex_getln.c Tue Jul 24 14:32:44 2007 --- src/ex_getln.c Wed Jul 25 20:57:05 2007 *************** *** 2095,2105 **** garray_T line_ga; char_u *pend; int startcol = 0; ! int c1; int escaped = FALSE; /* CTRL-V typed */ int vcol = 0; char_u *p; ! int prev_char = 0; /* Switch cursor on now. This avoids that it happens after the "\n", which * confuses the system function that computes tabstops. */ --- 2095,2105 ---- garray_T line_ga; char_u *pend; int startcol = 0; ! int c1 = 0; int escaped = FALSE; /* CTRL-V typed */ int vcol = 0; char_u *p; ! int prev_char; /* Switch cursor on now. This avoids that it happens after the "\n", which * confuses the system function that computes tabstops. */ *************** *** 2152,2157 **** --- 2152,2158 ---- /* Get one character at a time. Don't use inchar(), it can't handle * special characters. */ + prev_char = c1; c1 = vgetc(); /* *************** *** 2209,2215 **** redraw: /* redraw the line */ msg_col = startcol; - windgoto(msg_row, msg_col); vcol = 0; for (p = (char_u *)line_ga.ga_data; p < (char_u *)line_ga.ga_data + line_ga.ga_len; ++p) --- 2210,2215 ---- *************** *** 2228,2233 **** --- 2228,2234 ---- } } msg_clr_eos(); + windgoto(msg_row, msg_col); continue; } *************** *** 2273,2279 **** if (IS_SPECIAL(c1)) c1 = '?'; ((char_u *)line_ga.ga_data)[line_ga.ga_len] = c1; - prev_char = c1; if (c1 == '\n') msg_putchar('\n'); else if (c1 == TAB) --- 2274,2279 ---- *** ../vim-7.1.042/src/version.c Fri Jul 27 21:32:13 2007 --- src/version.c Sat Jul 28 14:19:37 2007 *************** *** 668,669 **** --- 668,671 ---- { /* Add new patch number below this line */ + /**/ + 43, /**/ -- hundred-and-one symptoms of being an internet addict: 48. You get a tatoo that says "This body best viewed with Netscape 3.1 or higher." /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///