To: vim-dev@vim.org Subject: Patch 7.2.122 Fcc: outbox From: Bram Moolenaar 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 ///