--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.122
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.122
+Problem: Invalid memory access when the VimResized autocommand changes
+ 'columns' and/or 'lines'.
+Solution: After VimResized check for changed values. (Dominique Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.121/src/screen.c Sun Feb 22 01:13:45 2009
+--- src/screen.c Sun Feb 22 01:07:38 2009
+***************
+*** 7368,7374 ****
+--- 7368,7378 ----
+ #endif
+ static int entered = FALSE; /* avoid recursiveness */
+ static int done_outofmem_msg = FALSE; /* did outofmem message */
++ #ifdef FEAT_AUTOCMD
++ int retry_count = 0;
+
++ retry:
++ #endif
+ /*
+ * Allocation of the screen buffers is done only when the size changes and
+ * when Rows and Columns have been set and we have started doing full
+***************
+*** 7643,7650 ****
+ --RedrawingDisabled;
+
+ #ifdef FEAT_AUTOCMD
+! if (starting == 0)
+ apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
+ #endif
+ }
+
+--- 7647,7663 ----
+ --RedrawingDisabled;
+
+ #ifdef FEAT_AUTOCMD
+! /*
+! * Do not apply autocommands more than 3 times to avoid an endless loop
+! * in case applying autocommands always changes Rows or Columns.
+! */
+! if (starting == 0 && ++retry_count <= 3)
+! {
+ apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
++ /* In rare cases, autocommands may have altered Rows or Columns,
++ * jump back to check if we need to allocate the screen again. */
++ goto retry;
++ }
+ #endif
+ }
+
+*** ../vim-7.2.121/src/version.c Sun Feb 22 02:51:37 2009
+--- src/version.c Sun Feb 22 21:11:14 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 122,
+ /**/
+
+--
+FIXME and XXX are two common keywords used to mark broken or incomplete code
+not only since XXX as a sex reference would grab everbodys attention but
+simply due to the fact that Vim would highlight these words.
+ -- Hendrik Scholz
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.123
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.123
+Problem: Typing 'q' at more prompt for ":map" output still displays another
+ line, causing another more prompt. (Markus Heidelberg)
+Solution: Quit listing maps when 'q' typed.
+Files: src/getchar.c
+
+
+*** ../vim-7.2.122/src/getchar.c Fri Nov 28 12:05:07 2008
+--- src/getchar.c Sun Feb 22 23:10:45 2009
+***************
+*** 3816,3822 ****
+--- 3816,3826 ----
+ int len = 1;
+
+ if (msg_didout || msg_silent != 0)
++ {
+ msg_putchar('\n');
++ if (got_int) /* 'q' typed at MORE prompt */
++ return;
++ }
+ if ((mp->m_mode & (INSERT + CMDLINE)) == INSERT + CMDLINE)
+ msg_putchar('!'); /* :map! */
+ else if (mp->m_mode & INSERT)
+*** ../vim-7.2.122/src/version.c Sun Feb 22 21:12:22 2009
+--- src/version.c Sun Feb 22 23:16:29 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 123,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+120. You ask a friend, "What's that big shiny thing?" He says, "It's the sun."
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.124
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.124
+Problem: Typing 'q' at more prompt for ":tselect" output still displays
+ more lines, causing another more prompt. (Markus Heidelberg)
+Solution: Quit listing tags when 'q' typed.
+Files: src/tag.c
+
+
+*** ../vim-7.2.123/src/tag.c Sat Feb 21 22:57:10 2009
+--- src/tag.c Mon Feb 23 00:07:24 2009
+***************
+*** 618,624 ****
+ taglen_advance(taglen);
+ MSG_PUTS_ATTR(_("file\n"), hl_attr(HLF_T));
+
+! for (i = 0; i < num_matches; ++i)
+ {
+ parse_match(matches[i], &tagp);
+ if (!new_tag && (
+--- 618,624 ----
+ taglen_advance(taglen);
+ MSG_PUTS_ATTR(_("file\n"), hl_attr(HLF_T));
+
+! for (i = 0; i < num_matches && !got_int; ++i)
+ {
+ parse_match(matches[i], &tagp);
+ if (!new_tag && (
+***************
+*** 655,660 ****
+--- 655,662 ----
+ }
+ if (msg_col > 0)
+ msg_putchar('\n');
++ if (got_int)
++ break;
+ msg_advance(15);
+
+ /* print any extra fields */
+***************
+*** 689,694 ****
+--- 691,698 ----
+ if (msg_col + ptr2cells(p) >= Columns)
+ {
+ msg_putchar('\n');
++ if (got_int)
++ break;
+ msg_advance(15);
+ }
+ p = msg_outtrans_one(p, attr);
+***************
+*** 704,709 ****
+--- 708,715 ----
+ if (msg_col > 15)
+ {
+ msg_putchar('\n');
++ if (got_int)
++ break;
+ msg_advance(15);
+ }
+ }
+***************
+*** 734,739 ****
+--- 740,747 ----
+ {
+ if (msg_col + (*p == TAB ? 1 : ptr2cells(p)) > Columns)
+ msg_putchar('\n');
++ if (got_int)
++ break;
+ msg_advance(15);
+
+ /* skip backslash used for escaping command char */
+***************
+*** 760,771 ****
+ if (msg_col)
+ msg_putchar('\n');
+ ui_breakcheck();
+- if (got_int)
+- {
+- got_int = FALSE; /* only stop the listing */
+- break;
+- }
+ }
+ ask_for_selection = TRUE;
+ }
+ #if defined(FEAT_QUICKFIX) && defined(FEAT_EVAL)
+--- 768,776 ----
+ if (msg_col)
+ msg_putchar('\n');
+ ui_breakcheck();
+ }
++ if (got_int)
++ got_int = FALSE; /* only stop the listing */
+ ask_for_selection = TRUE;
+ }
+ #if defined(FEAT_QUICKFIX) && defined(FEAT_EVAL)
+*** ../vim-7.2.123/src/version.c Sun Feb 22 23:42:08 2009
+--- src/version.c Mon Feb 23 00:51:57 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 124,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+123. You ask the car dealer to install an extra cigarette lighter
+ on your new car to power your notebook.
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.125
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.125
+Problem: Leaking memory when reading XPM bitmap for a sign.
+Solution: Don't allocate the memory twice. (Dominique Pelle)
+Files: src/gui_x11.c
+
+
+*** ../vim-7.2.124/src/gui_x11.c Wed Nov 12 13:07:48 2008
+--- src/gui_x11.c Sun Feb 22 21:58:19 2009
+***************
+*** 1587,1592 ****
+--- 1587,1594 ----
+ XtCloseDisplay(gui.dpy);
+ gui.dpy = NULL;
+ vimShell = (Widget)0;
++ vim_free(gui_argv);
++ gui_argv = NULL;
+ }
+
+ /*
+***************
+*** 1761,1766 ****
+--- 1763,1770 ----
+ * says that this isn't needed when exiting, so just skip it. */
+ XtCloseDisplay(gui.dpy);
+ #endif
++ vim_free(gui_argv);
++ gui_argv = NULL;
+ }
+
+ /*
+***************
+*** 3439,3485 ****
+ char_u *signfile;
+ {
+ XpmAttributes attrs;
+! XImage *sign;
+ int status;
+
+ /*
+ * Setup the color substitution table.
+ */
+- sign = NULL;
+ if (signfile[0] != NUL && signfile[0] != '-')
+ {
+! sign = (XImage *)alloc(sizeof(XImage));
+! if (sign != NULL)
+ {
+! XpmColorSymbol color[5] =
+! {
+! {"none", NULL, 0},
+! {"iconColor1", NULL, 0},
+! {"bottomShadowColor", NULL, 0},
+! {"topShadowColor", NULL, 0},
+! {"selectColor", NULL, 0}
+! };
+! attrs.valuemask = XpmColorSymbols;
+! attrs.numsymbols = 2;
+! attrs.colorsymbols = color;
+! attrs.colorsymbols[0].pixel = gui.back_pixel;
+! attrs.colorsymbols[1].pixel = gui.norm_pixel;
+! status = XpmReadFileToImage(gui.dpy, (char *)signfile,
+ &sign, NULL, &attrs);
+!
+! if (status == 0)
+! {
+! /* Sign width is fixed at two columns now.
+! if (sign->width > gui.sign_width)
+! gui.sign_width = sign->width + 8; */
+! }
+! else
+! {
+! vim_free(sign);
+! sign = NULL;
+! EMSG(_(e_signdata));
+! }
+ }
+ }
+
+ return (void *)sign;
+--- 3443,3479 ----
+ char_u *signfile;
+ {
+ XpmAttributes attrs;
+! XImage *sign = NULL;
+ int status;
+
+ /*
+ * Setup the color substitution table.
+ */
+ if (signfile[0] != NUL && signfile[0] != '-')
+ {
+! XpmColorSymbol color[5] =
+ {
+! {"none", NULL, 0},
+! {"iconColor1", NULL, 0},
+! {"bottomShadowColor", NULL, 0},
+! {"topShadowColor", NULL, 0},
+! {"selectColor", NULL, 0}
+! };
+! attrs.valuemask = XpmColorSymbols;
+! attrs.numsymbols = 2;
+! attrs.colorsymbols = color;
+! attrs.colorsymbols[0].pixel = gui.back_pixel;
+! attrs.colorsymbols[1].pixel = gui.norm_pixel;
+! status = XpmReadFileToImage(gui.dpy, (char *)signfile,
+ &sign, NULL, &attrs);
+! if (status == 0)
+! {
+! /* Sign width is fixed at two columns now.
+! if (sign->width > gui.sign_width)
+! gui.sign_width = sign->width + 8; */
+ }
++ else
++ EMSG(_(e_signdata));
+ }
+
+ return (void *)sign;
+***************
+*** 3489,3496 ****
+ gui_mch_destroy_sign(sign)
+ void *sign;
+ {
+! XFree(((XImage *)sign)->data);
+! vim_free(sign);
+ }
+ #endif
+
+--- 3483,3489 ----
+ gui_mch_destroy_sign(sign)
+ void *sign;
+ {
+! XDestroyImage((XImage*)sign);
+ }
+ #endif
+
+*** ../vim-7.2.124/src/version.c Mon Feb 23 00:53:35 2009
+--- src/version.c Tue Feb 24 04:09:33 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 125,
+ /**/
+
+--
+I have a watch cat! Just break in and she'll watch.
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.126
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.126
+Problem: When EXITFREE is defined signs are not freed.
+Solution: Free all signs on exit. Also free keymaps. (Dominique Pelle)
+Files: src/misc2.c, src/ex_cmds.c, src/proto/ex_cmds.pro
+
+
+*** ../vim-7.2.125/src/misc2.c Thu Jan 22 21:31:24 2009
+--- src/misc2.c Sun Feb 22 22:04:53 2009
+***************
+*** 1010,1015 ****
+--- 1010,1018 ----
+ # if defined(FEAT_PROFILE)
+ do_cmdline_cmd((char_u *)"profdel *");
+ # endif
++ # if defined(FEAT_KEYMAP)
++ do_cmdline_cmd((char_u *)"set keymap=");
++ #endif
+
+ # ifdef FEAT_TITLE
+ free_titles();
+***************
+*** 1034,1039 ****
+--- 1037,1045 ----
+ free_regexp_stuff();
+ free_tag_stuff();
+ free_cd_dir();
++ # ifdef FEAT_SIGNS
++ free_signs();
++ # endif
+ # ifdef FEAT_EVAL
+ set_expr_line(NULL);
+ # endif
+*** ../vim-7.2.125/src/ex_cmds.c Wed Feb 11 16:02:29 2009
+--- src/ex_cmds.c Sun Feb 22 22:07:08 2009
+***************
+*** 6541,6546 ****
+--- 6541,6547 ----
+ static int last_sign_typenr = MAX_TYPENR; /* is decremented */
+
+ static void sign_list_defined __ARGS((sign_T *sp));
++ static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
+
+ /*
+ * ":sign" command
+***************
+*** 6749,6772 ****
+ /* ":sign list {name}" */
+ sign_list_defined(sp);
+ else
+- {
+ /* ":sign undefine {name}" */
+! vim_free(sp->sn_name);
+! vim_free(sp->sn_icon);
+! #ifdef FEAT_SIGN_ICONS
+! if (sp->sn_image != NULL)
+! {
+! out_flush();
+! gui_mch_destroy_sign(sp->sn_image);
+! }
+! #endif
+! vim_free(sp->sn_text);
+! if (sp_prev == NULL)
+! first_sign = sp->sn_next;
+! else
+! sp_prev->sn_next = sp->sn_next;
+! vim_free(sp);
+! }
+ }
+ }
+ else
+--- 6750,6757 ----
+ /* ":sign list {name}" */
+ sign_list_defined(sp);
+ else
+ /* ":sign undefine {name}" */
+! sign_undefine(sp, sp_prev);
+ }
+ }
+ else
+***************
+*** 7015,7020 ****
+--- 7000,7030 ----
+ }
+
+ /*
++ * Undefine a sign and free its memory.
++ */
++ static void
++ sign_undefine(sp, sp_prev)
++ sign_T *sp;
++ sign_T *sp_prev;
++ {
++ vim_free(sp->sn_name);
++ vim_free(sp->sn_icon);
++ #ifdef FEAT_SIGN_ICONS
++ if (sp->sn_image != NULL)
++ {
++ out_flush();
++ gui_mch_destroy_sign(sp->sn_image);
++ }
++ #endif
++ vim_free(sp->sn_text);
++ if (sp_prev == NULL)
++ first_sign = sp->sn_next;
++ else
++ sp_prev->sn_next = sp->sn_next;
++ vim_free(sp);
++ }
++
++ /*
+ * Get highlighting attribute for sign "typenr".
+ * If "line" is TRUE: line highl, if FALSE: text highl.
+ */
+***************
+*** 7088,7093 ****
+--- 7098,7115 ----
+ return (char_u *)_("[Deleted]");
+ }
+
++ #if defined(EXITFREE) || defined(PROTO)
++ /*
++ * Undefine/free all signs.
++ */
++ void
++ free_signs()
++ {
++ while (first_sign != NULL)
++ sign_undefine(first_sign, NULL);
++ }
++ #endif
++
+ #endif
+
+ #if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO)
+*** ../vim-7.2.125/src/proto/ex_cmds.pro Sat Nov 15 14:10:23 2008
+--- src/proto/ex_cmds.pro Sun Feb 22 22:04:53 2009
+***************
+*** 40,45 ****
+--- 40,46 ----
+ int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
+ void write_viminfo_sub_string __ARGS((FILE *fp));
+ void free_old_sub __ARGS((void));
++ void free_signs __ARGS((void));
+ int prepare_tagpreview __ARGS((int undo_sync));
+ void ex_help __ARGS((exarg_T *eap));
+ char_u *check_help_lang __ARGS((char_u *arg));
+*** ../vim-7.2.125/src/version.c Tue Feb 24 04:11:07 2009
+--- src/version.c Tue Feb 24 04:24:46 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 126,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+125. You begin to wonder how often it REALLY is necessary to get up
+ and shower or bathe.
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.127
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.127
+Problem: When listing mappings and a wrapping line causes the more prompt,
+ after typing 'q' there can be another more prompt. (Markus
+ Heidelberg)
+Solution: Set "lines_left" to allow more lines to be displayed.
+Files: src/message.c
+
+
+*** ../vim-7.2.126/src/message.c Sun Feb 22 00:58:03 2009
+--- src/message.c Mon Feb 23 04:17:39 2009
+***************
+*** 2553,2559 ****
+ {
+ /* Jump to the choices of the dialog. */
+ retval = TRUE;
+- lines_left = Rows - 1;
+ }
+ else
+ #endif
+--- 2553,2558 ----
+***************
+*** 2561,2566 ****
+--- 2560,2568 ----
+ got_int = TRUE;
+ quit_more = TRUE;
+ }
++ /* When there is some more output (wrapping line) display that
++ * without another prompt. */
++ lines_left = Rows - 1;
+ break;
+
+ #ifdef FEAT_CLIPBOARD
+*** ../vim-7.2.126/src/version.c Tue Feb 24 04:28:40 2009
+--- src/version.c Tue Feb 24 04:35:38 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 127,
+ /**/
+
+--
+The difference between theory and practice, is that in theory, there
+is no difference between theory and practice.
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.128
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.128 (after 7.2.055)
+Problem: Using ":lcd" makes session files not work.
+Solution: Compare return value of mch_chdir() properly. (Andreas Bernauer)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.127/src/ex_docmd.c Sat Feb 21 20:36:30 2009
+--- src/ex_docmd.c Sun Mar 1 02:39:38 2009
+***************
+*** 8792,8798 ****
+ else if (*dirnow != NUL
+ && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
+ {
+! if (mch_chdir((char *)globaldir) == OK)
+ shorten_fnames(TRUE);
+ }
+
+--- 8799,8805 ----
+ else if (*dirnow != NUL
+ && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
+ {
+! if (mch_chdir((char *)globaldir) == 0)
+ shorten_fnames(TRUE);
+ }
+
+*** ../vim-7.2.127/src/version.c Tue Feb 24 04:36:50 2009
+--- src/version.c Sun Mar 1 02:42:47 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 128,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+138. You develop a liking for cold coffee.
+
+ /// 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 ///