Compare commits

...

3 Commits

Author SHA1 Message Date
Bram Moolenaar
4e036c9e6f updated for version 7.4.369
Problem:    Using freed memory when exiting while compiled with EXITFREE.
Solution:   Set curwin to NULL and check for that. (Dominique Pelle)
2014-07-16 16:30:28 +02:00
Bram Moolenaar
b643e77782 updated for version 7.4.368
Problem:    Restoring the window sizes after closing the command line window
            doesn't work properly if there are nested splits.
Solution:   Restore the sizes twice. (Hirohito Higashi)
2014-07-16 15:18:26 +02:00
Bram Moolenaar
f1924a9d8c updated for version 7.4.367
Problem:    Other solution for redrawing after completion.
Solution:   Schedule a window redraw instead of just clearing the command
            line. (Jacob Niehus)
2014-07-16 14:42:46 +02:00
4 changed files with 27 additions and 8 deletions

View File

@@ -5702,8 +5702,8 @@ buf_delete_signs(buf)
signlist_T *next;
/* When deleting the last sign need to redraw the windows to remove the
* sign column. */
if (buf->b_signlist != NULL)
* sign column. Not when curwin is NULL (this means we're exiting). */
if (buf->b_signlist != NULL && curwin != NULL)
{
redraw_buf_later(buf, NOT_VALID);
changed_cline_bef_curs();

View File

@@ -3854,7 +3854,8 @@ ins_compl_prep(c)
ins_compl_free();
compl_started = FALSE;
compl_matches = 0;
msg_clr_cmdline(); /* necessary for "noshowmode" */
if (!shortmess(SHM_COMPLETIONMENU))
msg_clr_cmdline(); /* necessary for "noshowmode" */
ctrl_x_mode = 0;
compl_enter_selects = FALSE;
if (edit_submode != NULL)
@@ -4591,7 +4592,10 @@ ins_compl_delete()
*/
i = compl_col + (compl_cont_status & CONT_ADDING ? compl_length : 0);
backspace_until_column(i);
/* Not sure what is still valid, better redraw everything. */
changed_cline_bef_curs();
redraw_curbuf_later(NOT_VALID);
}
/* Insert the new text being completed. */

View File

@@ -734,6 +734,12 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
369,
/**/
368,
/**/
367,
/**/
366,
/**/

View File

@@ -2489,6 +2489,10 @@ win_free_all()
while (firstwin != NULL)
(void)win_free_mem(firstwin, &dummy, NULL);
/* No window should be used after this. Set curwin to NULL to crash
* instead of using freed memory. */
curwin = NULL;
}
#endif
@@ -4848,15 +4852,20 @@ win_size_restore(gap)
garray_T *gap;
{
win_T *wp;
int i;
int i, j;
if (win_count() * 2 == gap->ga_len)
{
i = 0;
for (wp = firstwin; wp != NULL; wp = wp->w_next)
/* The order matters, because frames contain other frames, but it's
* difficult to get right. The easy way out is to do it twice. */
for (j = 0; j < 2; ++j)
{
frame_setwidth(wp->w_frame, ((int *)gap->ga_data)[i++]);
win_setheight_win(((int *)gap->ga_data)[i++], wp);
i = 0;
for (wp = firstwin; wp != NULL; wp = wp->w_next)
{
frame_setwidth(wp->w_frame, ((int *)gap->ga_data)[i++]);
win_setheight_win(((int *)gap->ga_data)[i++], wp);
}
}
/* recompute the window positions */
(void)win_comp_pos();