[vim] - patchlevel 613

Karsten Hopp karsten at fedoraproject.org
Wed Feb 11 12:50:22 UTC 2015


commit 5e9ac1ae96607a3968dd236a80e257903225d0c0
Author: Karsten Hopp <karsten at redhat.com>
Date:   Tue Feb 3 18:00:05 2015 +0100

    - patchlevel 613

 7.4.613 |  236 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 236 insertions(+), 0 deletions(-)
---
diff --git a/7.4.613 b/7.4.613
new file mode 100644
index 0000000..f6b52e8
--- /dev/null
+++ b/7.4.613
@@ -0,0 +1,236 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.4.613
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.613
+Problem:    The NFA engine does not implement the 'redrawtime' time limit.
+Solution:   Implement the time limit.
+Files:	    src/regexp_nfa.c
+
+
+*** ../vim-7.4.612/src/regexp_nfa.c	2015-01-27 14:54:07.944583588 +0100
+--- src/regexp_nfa.c	2015-02-03 16:25:58.681726505 +0100
+***************
+*** 311,318 ****
+  static void nfa_save_listids __ARGS((nfa_regprog_T *prog, int *list));
+  static void nfa_restore_listids __ARGS((nfa_regprog_T *prog, int *list));
+  static int nfa_re_num_cmp __ARGS((long_u val, int op, long_u pos));
+! static long nfa_regtry __ARGS((nfa_regprog_T *prog, colnr_T col));
+! static long nfa_regexec_both __ARGS((char_u *line, colnr_T col));
+  static regprog_T *nfa_regcomp __ARGS((char_u *expr, int re_flags));
+  static void nfa_regfree __ARGS((regprog_T *prog));
+  static int  nfa_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col, int line_lbr));
+--- 311,318 ----
+  static void nfa_save_listids __ARGS((nfa_regprog_T *prog, int *list));
+  static void nfa_restore_listids __ARGS((nfa_regprog_T *prog, int *list));
+  static int nfa_re_num_cmp __ARGS((long_u val, int op, long_u pos));
+! static long nfa_regtry __ARGS((nfa_regprog_T *prog, colnr_T col, proftime_T *tm));
+! static long nfa_regexec_both __ARGS((char_u *line, colnr_T col, proftime_T *tm));
+  static regprog_T *nfa_regcomp __ARGS((char_u *expr, int re_flags));
+  static void nfa_regfree __ARGS((regprog_T *prog));
+  static int  nfa_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col, int line_lbr));
+***************
+*** 3850,3855 ****
+--- 3850,3859 ----
+  
+  /* Used during execution: whether a match has been found. */
+  static int nfa_match;
++ #ifdef FEAT_RELTIME
++ static proftime_T  *nfa_time_limit;
++ static int         nfa_time_count;
++ #endif
+  
+  static void copy_pim __ARGS((nfa_pim_T *to, nfa_pim_T *from));
+  static void clear_sub __ARGS((regsub_T *sub));
+***************
+*** 5449,5454 ****
+--- 5453,5462 ----
+      fast_breakcheck();
+      if (got_int)
+  	return FALSE;
++ #ifdef FEAT_RELTIME
++     if (nfa_time_limit != NULL && profile_passed_limit(nfa_time_limit))
++ 	return FALSE;
++ #endif
+  
+      nfa_match = FALSE;
+  
+***************
+*** 6789,6797 ****
+  	    break;
+  
+  	/* Allow interrupting with CTRL-C. */
+! 	fast_breakcheck();
+  	if (got_int)
+  	    break;
+      }
+  
+  #ifdef ENABLE_LOG
+--- 6797,6814 ----
+  	    break;
+  
+  	/* Allow interrupting with CTRL-C. */
+! 	line_breakcheck();
+  	if (got_int)
+  	    break;
++ #ifdef FEAT_RELTIME
++ 	/* Check for timeout once in a twenty times to avoid overhead. */
++ 	if (nfa_time_limit != NULL && ++nfa_time_count == 20)
++ 	{
++ 	    nfa_time_count = 0;
++ 	    if (profile_passed_limit(nfa_time_limit))
++ 		break;
++ 	}
++ #endif
+      }
+  
+  #ifdef ENABLE_LOG
+***************
+*** 6818,6826 ****
+   * Returns <= 0 for failure, number of lines contained in the match otherwise.
+   */
+      static long
+! nfa_regtry(prog, col)
+      nfa_regprog_T   *prog;
+      colnr_T	    col;
+  {
+      int		i;
+      regsubs_T	subs, m;
+--- 6835,6844 ----
+   * Returns <= 0 for failure, number of lines contained in the match otherwise.
+   */
+      static long
+! nfa_regtry(prog, col, tm)
+      nfa_regprog_T   *prog;
+      colnr_T	    col;
++     proftime_T	    *tm;	/* timeout limit or NULL */
+  {
+      int		i;
+      regsubs_T	subs, m;
+***************
+*** 6831,6836 ****
+--- 6849,6858 ----
+  #endif
+  
+      reginput = regline + col;
++ #ifdef FEAT_RELTIME
++     nfa_time_limit = tm;
++     nfa_time_count = 0;
++ #endif
+  
+  #ifdef ENABLE_LOG
+      f = fopen(NFA_REGEXP_RUN_LOG, "a");
+***************
+*** 6951,6959 ****
+   * Returns <= 0 for failure, number of lines contained in the match otherwise.
+   */
+      static long
+! nfa_regexec_both(line, startcol)
+      char_u	*line;
+      colnr_T	startcol;	/* column to start looking for match */
+  {
+      nfa_regprog_T   *prog;
+      long	    retval = 0L;
+--- 6973,6982 ----
+   * Returns <= 0 for failure, number of lines contained in the match otherwise.
+   */
+      static long
+! nfa_regexec_both(line, startcol, tm)
+      char_u	*line;
+      colnr_T	startcol;	/* column to start looking for match */
++     proftime_T	*tm;		/* timeout limit or NULL */
+  {
+      nfa_regprog_T   *prog;
+      long	    retval = 0L;
+***************
+*** 7047,7053 ****
+  	prog->state[i].lastlist[1] = 0;
+      }
+  
+!     retval = nfa_regtry(prog, col);
+  
+      nfa_regengine.expr = NULL;
+  
+--- 7070,7076 ----
+  	prog->state[i].lastlist[1] = 0;
+      }
+  
+!     retval = nfa_regtry(prog, col, tm);
+  
+      nfa_regengine.expr = NULL;
+  
+***************
+*** 7209,7215 ****
+      ireg_icombine = FALSE;
+  #endif
+      ireg_maxcol = 0;
+!     return nfa_regexec_both(line, col);
+  }
+  
+  
+--- 7232,7238 ----
+      ireg_icombine = FALSE;
+  #endif
+      ireg_maxcol = 0;
+!     return nfa_regexec_both(line, col, NULL);
+  }
+  
+  
+***************
+*** 7245,7251 ****
+      buf_T	*buf;		/* buffer in which to search */
+      linenr_T	lnum;		/* nr of line to start looking for match */
+      colnr_T	col;		/* column to start looking for match */
+!     proftime_T	*tm UNUSED;	/* timeout limit or NULL */
+  {
+      reg_match = NULL;
+      reg_mmatch = rmp;
+--- 7268,7274 ----
+      buf_T	*buf;		/* buffer in which to search */
+      linenr_T	lnum;		/* nr of line to start looking for match */
+      colnr_T	col;		/* column to start looking for match */
+!     proftime_T	*tm;		/* timeout limit or NULL */
+  {
+      reg_match = NULL;
+      reg_mmatch = rmp;
+***************
+*** 7260,7266 ****
+  #endif
+      ireg_maxcol = rmp->rmm_maxcol;
+  
+!     return nfa_regexec_both(NULL, col);
+  }
+  
+  #ifdef DEBUG
+--- 7283,7289 ----
+  #endif
+      ireg_maxcol = rmp->rmm_maxcol;
+  
+!     return nfa_regexec_both(NULL, col, tm);
+  }
+  
+  #ifdef DEBUG
+*** ../vim-7.4.612/src/version.c	2015-02-03 16:07:44.193584399 +0100
+--- src/version.c	2015-02-03 16:48:54.770821421 +0100
+***************
+*** 743,744 ****
+--- 743,746 ----
+  {   /* Add new patch number below this line */
++ /**/
++     613,
+  /**/
+
+-- 
+In Joseph Heller's novel "Catch-22", the main character tries to get out of a
+war by proving he is crazy.  But the mere fact he wants to get out of the war
+only shows he isn't crazy -- creating the original "Catch-22".
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


More information about the scm-commits mailing list