To:
[email protected]
Subject: Patch 6.3b.026
Fcc: outbox
From: Bram Moolenaar <
[email protected]>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 6.3b.026
Problem: When selecting "abort" at the ATTENTION prompt for a file that is
already being edited Vim crashes.
Solution: Don't abort creating a new buffer when we really need it.
Files: src/buffer.c, src/vim.h
*** ../vim-6.3b.025/src/buffer.c Sun May 16 22:38:46 2004
--- src/buffer.c Tue Jun 1 15:42:34 2004
***************
*** 693,700 ****
swap_exists_action = SEA_NONE; /* don't want it again */
close_buffer(curwin, curbuf, DOBUF_UNLOAD);
if (!buf_valid(old_curbuf) || old_curbuf == curbuf)
! old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED);
! enter_buffer(old_curbuf);
}
else if (swap_exists_action == SEA_RECOVER)
{
--- 693,703 ----
swap_exists_action = SEA_NONE; /* don't want it again */
close_buffer(curwin, curbuf, DOBUF_UNLOAD);
if (!buf_valid(old_curbuf) || old_curbuf == curbuf)
! old_curbuf = buflist_new(NULL, NULL, 1L,
! BLN_CURBUF | BLN_LISTED | BLN_FORCE);
! if (old_curbuf != NULL)
! enter_buffer(old_curbuf);
! /* If "old_curbuf" is NULL we are in big trouble here... */
}
else if (swap_exists_action == SEA_RECOVER)
{
***************
*** 1377,1382 ****
--- 1380,1386 ----
* If (flags & BLN_CURBUF) is TRUE, may use current buffer.
* If (flags & BLN_LISTED) is TRUE, add new buffer to buffer list.
* If (flags & BLN_DUMMY) is TRUE, don't count it as a real buffer.
+ * If (flags & BLN_FORCE) is TRUE, don't abort on an error.
* This is the ONLY way to create a new buffer.
*/
static int top_file_num = 1; /* highest file number */
***************
*** 1451,1457 ****
if (buf == curbuf)
apply_autocmds(EVENT_BUFWIPEOUT, NULL, NULL, FALSE, curbuf);
# ifdef FEAT_EVAL
! if (aborting()) /* autocmds may abort script processing */
return NULL;
# endif
#endif
--- 1455,1462 ----
if (buf == curbuf)
apply_autocmds(EVENT_BUFWIPEOUT, NULL, NULL, FALSE, curbuf);
# ifdef FEAT_EVAL
! /* autocmds may abort script processing */
! if (!(flags & BLN_FORCE) && aborting())
return NULL;
# endif
#endif
***************
*** 1504,1510 ****
if (buf != curbuf) /* autocommands deleted the buffer! */
return NULL;
#if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
! if (aborting()) /* autocmds may abort script processing */
return NULL;
#endif
/* buf->b_nwindows = 0; why was this here? */
--- 1509,1516 ----
if (buf != curbuf) /* autocommands deleted the buffer! */
return NULL;
#if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
! /* autocmds may abort script processing */
! if (!(flags & BLN_FORCE) && aborting())
return NULL;
#endif
/* buf->b_nwindows = 0; why was this here? */
***************
*** 1580,1586 ****
if (flags & BLN_LISTED)
apply_autocmds(EVENT_BUFADD, NULL, NULL, FALSE, buf);
# ifdef FEAT_EVAL
! if (aborting()) /* autocmds may abort script processing */
return NULL;
# endif
}
--- 1586,1593 ----
if (flags & BLN_LISTED)
apply_autocmds(EVENT_BUFADD, NULL, NULL, FALSE, buf);
# ifdef FEAT_EVAL
! /* autocmds may abort script processing */
! if (!(flags & BLN_FORCE) && aborting())
return NULL;
# endif
}
*** ../vim-6.3b.025/src/vim.h Sun May 16 22:38:45 2004
--- src/vim.h Tue Jun 1 15:22:43 2004
***************
*** 714,719 ****
--- 714,720 ----
#define BLN_CURBUF 1 /* May re-use curbuf for new buffer */
#define BLN_LISTED 2 /* Put new buffer in buffer list */
#define BLN_DUMMY 4 /* Allocating dummy buffer */
+ #define BLN_FORCE 8 /* Don't abort on error */
/* Values for in_cinkeys() */
#define KEY_OPEN_FORW 0x101
*** ../vim-6.3b.025/src/version.c Wed Jun 2 12:13:46 2004
--- src/version.c Wed Jun 2 17:40:40 2004
***************
*** 643,644 ****
--- 643,646 ----
{ /* Add new patch number below this line */
+ /**/
+ 26,
/**/
--
I'm not familiar with this proof, but I'm aware of a significant
following of toddlers who believe that peanut butter is the solution
to all of life's problems... -- Tim Hammerquist
/// Bram Moolenaar --
[email protected] --
http://www.Moolenaar.net \\\
/// Sponsor Vim, vote for features --
http://www.Vim.org/sponsor/ \\\
\\\ Project leader for A-A-P --
http://www.A-A-P.org ///
\\\ Buy at Amazon and help AIDS victims --
http://ICCF.nl/click1.html ///