components/vim/vim72-patches/7.2.305
changeset 198 172fc01ce997
equal deleted inserted replaced
197:fd801ec0737c 198:172fc01ce997
       
     1 To: [email protected]
       
     2 Subject: Patch 7.2.305
       
     3 Fcc: outbox
       
     4 From: Bram Moolenaar <[email protected]>
       
     5 Mime-Version: 1.0
       
     6 Content-Type: text/plain; charset=UTF-8
       
     7 Content-Transfer-Encoding: 8bit
       
     8 ------------
       
     9 
       
    10 Patch 7.2.305
       
    11 Problem:    Recursively redrawing causes a memory leak. (Dominique Pelle)
       
    12 Solution:   Disallow recursive screen updating.
       
    13 Files:	    src/screen.c
       
    14 
       
    15 
       
    16 *** ../vim-7.2.304/src/screen.c	2009-11-11 17:07:25.000000000 +0100
       
    17 --- src/screen.c	2009-11-17 16:30:53.000000000 +0100
       
    18 ***************
       
    19 *** 323,328 ****
       
    20 --- 323,329 ----
       
    21       int		did_one;
       
    22   #endif
       
    23   
       
    24 +     /* Don't do anything if the screen structures are (not yet) valid. */
       
    25       if (!screen_valid(TRUE))
       
    26   	return;
       
    27   
       
    28 ***************
       
    29 *** 342,348 ****
       
    30       if (curwin->w_lines_valid == 0 && type < NOT_VALID)
       
    31   	type = NOT_VALID;
       
    32   
       
    33 !     if (!redrawing())
       
    34       {
       
    35   	redraw_later(type);		/* remember type for next time */
       
    36   	must_redraw = type;
       
    37 --- 343,351 ----
       
    38       if (curwin->w_lines_valid == 0 && type < NOT_VALID)
       
    39   	type = NOT_VALID;
       
    40   
       
    41 !     /* Postpone the redrawing when it's not needed and when being called
       
    42 !      * recursively. */
       
    43 !     if (!redrawing() || updating_screen)
       
    44       {
       
    45   	redraw_later(type);		/* remember type for next time */
       
    46   	must_redraw = type;
       
    47 ***************
       
    48 *** 582,587 ****
       
    49 --- 585,591 ----
       
    50   
       
    51   /*
       
    52    * Prepare for updating one or more windows.
       
    53 +  * Caller must check for "updating_screen" already set to avoid recursiveness.
       
    54    */
       
    55       static void
       
    56   update_prepare()
       
    57 ***************
       
    58 *** 663,669 ****
       
    59   	    doit = TRUE;
       
    60       }
       
    61   
       
    62 !     if (!doit)
       
    63   	return;
       
    64   
       
    65       /* update all windows that need updating */
       
    66 --- 667,675 ----
       
    67   	    doit = TRUE;
       
    68       }
       
    69   
       
    70 !     /* Return when there is nothing to do or screen updating already
       
    71 !      * happening. */
       
    72 !     if (!doit || updating_screen)
       
    73   	return;
       
    74   
       
    75       /* update all windows that need updating */
       
    76 ***************
       
    77 *** 696,701 ****
       
    78 --- 702,711 ----
       
    79   updateWindow(wp)
       
    80       win_T	*wp;
       
    81   {
       
    82 +     /* return if already busy updating */
       
    83 +     if (updating_screen)
       
    84 + 	return;
       
    85 + 
       
    86       update_prepare();
       
    87   
       
    88   #ifdef FEAT_CLIPBOARD
       
    89 *** ../vim-7.2.304/src/version.c	2009-11-25 12:38:49.000000000 +0100
       
    90 --- src/version.c	2009-11-25 13:01:48.000000000 +0100
       
    91 ***************
       
    92 *** 683,684 ****
       
    93 --- 683,686 ----
       
    94   {   /* Add new patch number below this line */
       
    95 + /**/
       
    96 +     305,
       
    97   /**/
       
    98 
       
    99 -- 
       
   100 If the Universe is constantly expanding, why can't I ever find a parking space?
       
   101 
       
   102  /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
       
   103 ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
       
   104 \\\        download, build and distribute -- http://www.A-A-P.org        ///
       
   105  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///