components/vim/vim72-patches/7.2.126
changeset 379 c6a17bba1da3
parent 378 f0b61ed1d10d
child 380 e92b3b4a1c66
equal deleted inserted replaced
378:f0b61ed1d10d 379:c6a17bba1da3
     1 To: [email protected]
       
     2 Subject: Patch 7.2.126
       
     3 Fcc: outbox
       
     4 From: Bram Moolenaar <[email protected]>
       
     5 Mime-Version: 1.0
       
     6 Content-Type: text/plain; charset=ISO-8859-1
       
     7 Content-Transfer-Encoding: 8bit
       
     8 ------------
       
     9 
       
    10 Patch 7.2.126
       
    11 Problem:    When EXITFREE is defined signs are not freed.
       
    12 Solution:   Free all signs on exit.  Also free keymaps. (Dominique Pelle)
       
    13 Files:      src/misc2.c, src/ex_cmds.c, src/proto/ex_cmds.pro
       
    14 
       
    15 
       
    16 *** ../vim-7.2.125/src/misc2.c	Thu Jan 22 21:31:24 2009
       
    17 --- src/misc2.c	Sun Feb 22 22:04:53 2009
       
    18 ***************
       
    19 *** 1010,1015 ****
       
    20 --- 1010,1018 ----
       
    21   # if defined(FEAT_PROFILE)
       
    22       do_cmdline_cmd((char_u *)"profdel *");
       
    23   # endif
       
    24 + # if defined(FEAT_KEYMAP)
       
    25 +     do_cmdline_cmd((char_u *)"set keymap=");
       
    26 + #endif
       
    27   
       
    28   # ifdef FEAT_TITLE
       
    29       free_titles();
       
    30 ***************
       
    31 *** 1034,1039 ****
       
    32 --- 1037,1045 ----
       
    33       free_regexp_stuff();
       
    34       free_tag_stuff();
       
    35       free_cd_dir();
       
    36 + # ifdef FEAT_SIGNS
       
    37 +     free_signs();
       
    38 + # endif
       
    39   # ifdef FEAT_EVAL
       
    40       set_expr_line(NULL);
       
    41   # endif
       
    42 *** ../vim-7.2.125/src/ex_cmds.c	Wed Feb 11 16:02:29 2009
       
    43 --- src/ex_cmds.c	Sun Feb 22 22:07:08 2009
       
    44 ***************
       
    45 *** 6541,6546 ****
       
    46 --- 6541,6547 ----
       
    47   static int	last_sign_typenr = MAX_TYPENR;	/* is decremented */
       
    48   
       
    49   static void sign_list_defined __ARGS((sign_T *sp));
       
    50 + static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
       
    51   
       
    52   /*
       
    53    * ":sign" command
       
    54 ***************
       
    55 *** 6749,6772 ****
       
    56   		/* ":sign list {name}" */
       
    57   		sign_list_defined(sp);
       
    58   	    else
       
    59 - 	    {
       
    60   		/* ":sign undefine {name}" */
       
    61 ! 		vim_free(sp->sn_name);
       
    62 ! 		vim_free(sp->sn_icon);
       
    63 ! #ifdef FEAT_SIGN_ICONS
       
    64 ! 		if (sp->sn_image != NULL)
       
    65 ! 		{
       
    66 ! 		    out_flush();
       
    67 ! 		    gui_mch_destroy_sign(sp->sn_image);
       
    68 ! 		}
       
    69 ! #endif
       
    70 ! 		vim_free(sp->sn_text);
       
    71 ! 		if (sp_prev == NULL)
       
    72 ! 		    first_sign = sp->sn_next;
       
    73 ! 		else
       
    74 ! 		    sp_prev->sn_next = sp->sn_next;
       
    75 ! 		vim_free(sp);
       
    76 ! 	    }
       
    77   	}
       
    78       }
       
    79       else
       
    80 --- 6750,6757 ----
       
    81   		/* ":sign list {name}" */
       
    82   		sign_list_defined(sp);
       
    83   	    else
       
    84   		/* ":sign undefine {name}" */
       
    85 ! 		sign_undefine(sp, sp_prev);
       
    86   	}
       
    87       }
       
    88       else
       
    89 ***************
       
    90 *** 7015,7020 ****
       
    91 --- 7000,7030 ----
       
    92   }
       
    93   
       
    94   /*
       
    95 +  * Undefine a sign and free its memory.
       
    96 +  */
       
    97 +     static void
       
    98 + sign_undefine(sp, sp_prev)
       
    99 +     sign_T	*sp;
       
   100 +     sign_T	*sp_prev;
       
   101 + {
       
   102 +     vim_free(sp->sn_name);
       
   103 +     vim_free(sp->sn_icon);
       
   104 + #ifdef FEAT_SIGN_ICONS
       
   105 +     if (sp->sn_image != NULL)
       
   106 +     {
       
   107 + 	out_flush();
       
   108 + 	gui_mch_destroy_sign(sp->sn_image);
       
   109 +     }
       
   110 + #endif
       
   111 +     vim_free(sp->sn_text);
       
   112 +     if (sp_prev == NULL)
       
   113 + 	first_sign = sp->sn_next;
       
   114 +     else
       
   115 + 	sp_prev->sn_next = sp->sn_next;
       
   116 +     vim_free(sp);
       
   117 + }
       
   118 + 
       
   119 + /*
       
   120    * Get highlighting attribute for sign "typenr".
       
   121    * If "line" is TRUE: line highl, if FALSE: text highl.
       
   122    */
       
   123 ***************
       
   124 *** 7088,7093 ****
       
   125 --- 7098,7115 ----
       
   126       return (char_u *)_("[Deleted]");
       
   127   }
       
   128   
       
   129 + #if defined(EXITFREE) || defined(PROTO)
       
   130 + /*
       
   131 +  * Undefine/free all signs.
       
   132 +  */
       
   133 +     void
       
   134 + free_signs()
       
   135 + {
       
   136 +     while (first_sign != NULL)
       
   137 + 	sign_undefine(first_sign, NULL);
       
   138 + }
       
   139 + #endif
       
   140 + 
       
   141   #endif
       
   142   
       
   143   #if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO)
       
   144 *** ../vim-7.2.125/src/proto/ex_cmds.pro	Sat Nov 15 14:10:23 2008
       
   145 --- src/proto/ex_cmds.pro	Sun Feb 22 22:04:53 2009
       
   146 ***************
       
   147 *** 40,45 ****
       
   148 --- 40,46 ----
       
   149   int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
       
   150   void write_viminfo_sub_string __ARGS((FILE *fp));
       
   151   void free_old_sub __ARGS((void));
       
   152 + void free_signs __ARGS((void));
       
   153   int prepare_tagpreview __ARGS((int undo_sync));
       
   154   void ex_help __ARGS((exarg_T *eap));
       
   155   char_u *check_help_lang __ARGS((char_u *arg));
       
   156 *** ../vim-7.2.125/src/version.c	Tue Feb 24 04:11:07 2009
       
   157 --- src/version.c	Tue Feb 24 04:24:46 2009
       
   158 ***************
       
   159 *** 678,679 ****
       
   160 --- 678,681 ----
       
   161   {   /* Add new patch number below this line */
       
   162 + /**/
       
   163 +     126,
       
   164   /**/
       
   165 
       
   166 -- 
       
   167 hundred-and-one symptoms of being an internet addict:
       
   168 125. You begin to wonder how often it REALLY is necessary to get up
       
   169      and shower or bathe.
       
   170 
       
   171  /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
       
   172 ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
       
   173 \\\        download, build and distribute -- http://www.A-A-P.org        ///
       
   174  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///