home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / patches / 7.2 / 7.2.126 < prev    next >
Encoding:
Internet Message Format  |  2009-02-23  |  4.2 KB

  1. To: vim-dev@vim.org
  2. Subject: Patch 7.2.126
  3. Fcc: outbox
  4. From: Bram Moolenaar <Bram@moolenaar.net>
  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.    * Get highlighting attribute for sign "typenr".
  120.    * If "line" is TRUE: line highl, if FALSE: text highl.
  121.    */
  122. ***************
  123. *** 7088,7093 ****
  124. --- 7098,7115 ----
  125.       return (char_u *)_("[Deleted]");
  126.   }
  127.   
  128. + #if defined(EXITFREE) || defined(PROTO)
  129. + /*
  130. +  * Undefine/free all signs.
  131. +  */
  132. +     void
  133. + free_signs()
  134. + {
  135. +     while (first_sign != NULL)
  136. +     sign_undefine(first_sign, NULL);
  137. + }
  138. + #endif
  139.   #endif
  140.   
  141.   #if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO)
  142. *** ../vim-7.2.125/src/proto/ex_cmds.pro    Sat Nov 15 14:10:23 2008
  143. --- src/proto/ex_cmds.pro    Sun Feb 22 22:04:53 2009
  144. ***************
  145. *** 40,45 ****
  146. --- 40,46 ----
  147.   int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
  148.   void write_viminfo_sub_string __ARGS((FILE *fp));
  149.   void free_old_sub __ARGS((void));
  150. + void free_signs __ARGS((void));
  151.   int prepare_tagpreview __ARGS((int undo_sync));
  152.   void ex_help __ARGS((exarg_T *eap));
  153.   char_u *check_help_lang __ARGS((char_u *arg));
  154. *** ../vim-7.2.125/src/version.c    Tue Feb 24 04:11:07 2009
  155. --- src/version.c    Tue Feb 24 04:24:46 2009
  156. ***************
  157. *** 678,679 ****
  158. --- 678,681 ----
  159.   {   /* Add new patch number below this line */
  160. + /**/
  161. +     126,
  162.   /**/
  163.  
  164. -- 
  165. hundred-and-one symptoms of being an internet addict:
  166. 125. You begin to wonder how often it REALLY is necessary to get up
  167.      and shower or bathe.
  168.  
  169.  /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
  170. ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
  171. \\\        download, build and distribute -- http://www.A-A-P.org        ///
  172.  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
  173.