Karsten Hopp ba1789
To: vim-dev@vim.org
Karsten Hopp ba1789
Subject: Patch 7.2.317
Karsten Hopp ba1789
Fcc: outbox
Karsten Hopp ba1789
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp ba1789
Mime-Version: 1.0
Karsten Hopp ba1789
Content-Type: text/plain; charset=UTF-8
Karsten Hopp ba1789
Content-Transfer-Encoding: 8bit
Karsten Hopp ba1789
------------
Karsten Hopp ba1789
Karsten Hopp ba1789
Patch 7.2.317
Karsten Hopp ba1789
Problem:    Memory leak when adding a highlight group with unprintable
Karsten Hopp ba1789
	    characters, resulting in E669.
Karsten Hopp ba1789
Solution:   Free the memory.  And fix a few typos. (Dominique Pelle)
Karsten Hopp ba1789
Files:	    src/syntax.c
Karsten Hopp ba1789
Karsten Hopp ba1789
Karsten Hopp ba1789
*** ../vim-7.2.316/src/syntax.c	2009-05-17 13:30:58.000000000 +0200
Karsten Hopp ba1789
--- src/syntax.c	2009-12-16 18:09:05.000000000 +0100
Karsten Hopp ba1789
***************
Karsten Hopp ba1789
*** 206,212 ****
Karsten Hopp ba1789
  static int current_attr = 0;	    /* attr of current syntax word */
Karsten Hopp ba1789
  #ifdef FEAT_EVAL
Karsten Hopp ba1789
  static int current_id = 0;	    /* ID of current char for syn_get_id() */
Karsten Hopp ba1789
! static int current_trans_id = 0;    /* idem, transparancy removed */
Karsten Hopp ba1789
  #endif
Karsten Hopp ba1789
  
Karsten Hopp ba1789
  typedef struct syn_cluster_S
Karsten Hopp ba1789
--- 206,212 ----
Karsten Hopp ba1789
  static int current_attr = 0;	    /* attr of current syntax word */
Karsten Hopp ba1789
  #ifdef FEAT_EVAL
Karsten Hopp ba1789
  static int current_id = 0;	    /* ID of current char for syn_get_id() */
Karsten Hopp ba1789
! static int current_trans_id = 0;    /* idem, transparency removed */
Karsten Hopp ba1789
  #endif
Karsten Hopp ba1789
  
Karsten Hopp ba1789
  typedef struct syn_cluster_S
Karsten Hopp ba1789
***************
Karsten Hopp ba1789
*** 282,288 ****
Karsten Hopp ba1789
      int		si_idx;			/* index of syntax pattern or
Karsten Hopp ba1789
  					   KEYWORD_IDX */
Karsten Hopp ba1789
      int		si_id;			/* highlight group ID for keywords */
Karsten Hopp ba1789
!     int		si_trans_id;		/* idem, transparancy removed */
Karsten Hopp ba1789
      int		si_m_lnum;		/* lnum of the match */
Karsten Hopp ba1789
      int		si_m_startcol;		/* starting column of the match */
Karsten Hopp ba1789
      lpos_T	si_m_endpos;		/* just after end posn of the match */
Karsten Hopp ba1789
--- 282,288 ----
Karsten Hopp ba1789
      int		si_idx;			/* index of syntax pattern or
Karsten Hopp ba1789
  					   KEYWORD_IDX */
Karsten Hopp ba1789
      int		si_id;			/* highlight group ID for keywords */
Karsten Hopp ba1789
!     int		si_trans_id;		/* idem, transparency removed */
Karsten Hopp ba1789
      int		si_m_lnum;		/* lnum of the match */
Karsten Hopp ba1789
      int		si_m_startcol;		/* starting column of the match */
Karsten Hopp ba1789
      lpos_T	si_m_endpos;		/* just after end posn of the match */
Karsten Hopp ba1789
***************
Karsten Hopp ba1789
*** 1274,1280 ****
Karsten Hopp ba1789
  	dist = syn_buf->b_ml.ml_line_count / (syn_buf->b_sst_len - Rows) + 1;
Karsten Hopp ba1789
  
Karsten Hopp ba1789
      /*
Karsten Hopp ba1789
!      * Go throught the list to find the "tick" for the oldest entry that can
Karsten Hopp ba1789
       * be removed.  Set "above" when the "tick" for the oldest entry is above
Karsten Hopp ba1789
       * "b_sst_lasttick" (the display tick wraps around).
Karsten Hopp ba1789
       */
Karsten Hopp ba1789
--- 1274,1280 ----
Karsten Hopp ba1789
  	dist = syn_buf->b_ml.ml_line_count / (syn_buf->b_sst_len - Rows) + 1;
Karsten Hopp ba1789
  
Karsten Hopp ba1789
      /*
Karsten Hopp ba1789
!      * Go through the list to find the "tick" for the oldest entry that can
Karsten Hopp ba1789
       * be removed.  Set "above" when the "tick" for the oldest entry is above
Karsten Hopp ba1789
       * "b_sst_lasttick" (the display tick wraps around).
Karsten Hopp ba1789
       */
Karsten Hopp ba1789
***************
Karsten Hopp ba1789
*** 2319,2325 ****
Karsten Hopp ba1789
  		    ? (syn_buf->b_spell_cluster_id == 0)
Karsten Hopp ba1789
  		    : (syn_buf->b_syn_spell == SYNSPL_TOP);
Karsten Hopp ba1789
  
Karsten Hopp ba1789
!     /* nextgroup ends at end of line, unless "skipnl" or "skipemtpy" present */
Karsten Hopp ba1789
      if (current_next_list != NULL
Karsten Hopp ba1789
  	    && syn_getcurline()[current_col + 1] == NUL
Karsten Hopp ba1789
  	    && !(current_next_flags & (HL_SKIPNL | HL_SKIPEMPTY)))
Karsten Hopp ba1789
--- 2319,2325 ----
Karsten Hopp ba1789
  		    ? (syn_buf->b_spell_cluster_id == 0)
Karsten Hopp ba1789
  		    : (syn_buf->b_syn_spell == SYNSPL_TOP);
Karsten Hopp ba1789
  
Karsten Hopp ba1789
!     /* nextgroup ends at end of line, unless "skipnl" or "skipempty" present */
Karsten Hopp ba1789
      if (current_next_list != NULL
Karsten Hopp ba1789
  	    && syn_getcurline()[current_col + 1] == NUL
Karsten Hopp ba1789
  	    && !(current_next_flags & (HL_SKIPNL | HL_SKIPEMPTY)))
Karsten Hopp ba1789
***************
Karsten Hopp ba1789
*** 6108,6114 ****
Karsten Hopp ba1789
      win_T	*wp;
Karsten Hopp ba1789
      long	lnum;
Karsten Hopp ba1789
      colnr_T	col;
Karsten Hopp ba1789
!     int		trans;	     /* remove transparancy */
Karsten Hopp ba1789
      int		*spellp;     /* return: can do spell checking */
Karsten Hopp ba1789
      int		keep_state;  /* keep state of char at "col" */
Karsten Hopp ba1789
  {
Karsten Hopp ba1789
--- 6108,6114 ----
Karsten Hopp ba1789
      win_T	*wp;
Karsten Hopp ba1789
      long	lnum;
Karsten Hopp ba1789
      colnr_T	col;
Karsten Hopp ba1789
!     int		trans;	     /* remove transparency */
Karsten Hopp ba1789
      int		*spellp;     /* return: can do spell checking */
Karsten Hopp ba1789
      int		keep_state;  /* keep state of char at "col" */
Karsten Hopp ba1789
  {
Karsten Hopp ba1789
***************
Karsten Hopp ba1789
*** 7523,7529 ****
Karsten Hopp ba1789
  #if defined(FEAT_GUI) || defined(PROTO)
Karsten Hopp ba1789
  /*
Karsten Hopp ba1789
   * Set the normal foreground and background colors according to the "Normal"
Karsten Hopp ba1789
!  * highlighighting group.  For X11 also set "Menu", "Scrollbar", and
Karsten Hopp ba1789
   * "Tooltip" colors.
Karsten Hopp ba1789
   */
Karsten Hopp ba1789
      void
Karsten Hopp ba1789
--- 7523,7529 ----
Karsten Hopp ba1789
  #if defined(FEAT_GUI) || defined(PROTO)
Karsten Hopp ba1789
  /*
Karsten Hopp ba1789
   * Set the normal foreground and background colors according to the "Normal"
Karsten Hopp ba1789
!  * highlighting group.  For X11 also set "Menu", "Scrollbar", and
Karsten Hopp ba1789
   * "Tooltip" colors.
Karsten Hopp ba1789
   */
Karsten Hopp ba1789
      void
Karsten Hopp ba1789
***************
Karsten Hopp ba1789
*** 8647,8652 ****
Karsten Hopp ba1789
--- 8647,8653 ----
Karsten Hopp ba1789
  	if (!vim_isprintc(*p))
Karsten Hopp ba1789
  	{
Karsten Hopp ba1789
  	    EMSG(_("E669: Unprintable character in group name"));
Karsten Hopp ba1789
+ 	    vim_free(name);
Karsten Hopp ba1789
  	    return 0;
Karsten Hopp ba1789
  	}
Karsten Hopp ba1789
  	else if (!ASCII_ISALNUM(*p) && *p != '_')
Karsten Hopp ba1789
*** ../vim-7.2.316/src/version.c	2009-12-16 17:14:08.000000000 +0100
Karsten Hopp ba1789
--- src/version.c	2009-12-16 18:09:14.000000000 +0100
Karsten Hopp ba1789
***************
Karsten Hopp ba1789
*** 683,684 ****
Karsten Hopp ba1789
--- 683,686 ----
Karsten Hopp ba1789
  {   /* Add new patch number below this line */
Karsten Hopp ba1789
+ /**/
Karsten Hopp ba1789
+     317,
Karsten Hopp ba1789
  /**/
Karsten Hopp ba1789
Karsten Hopp ba1789
-- 
Karsten Hopp ba1789
hundred-and-one symptoms of being an internet addict:
Karsten Hopp ba1789
35. Your husband tells you he's had the beard for 2 months.
Karsten Hopp ba1789
Karsten Hopp ba1789
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp ba1789
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp ba1789
\\\        download, build and distribute -- http://www.A-A-P.org        ///
Karsten Hopp ba1789
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///