Loading ...
Sorry, an error occurred while loading the content.

Patch 7.4a.039

Expand Messages
  • Bram Moolenaar
    Patch 7.4a.039 Problem: New regexp engine doesn t match pattern. (Ingo Karkat) Solution: When adding a state also check for different PIM if the list of
    Message 1 of 1 , Jul 21, 2013
    • 0 Attachment
      Patch 7.4a.039
      Problem: New regexp engine doesn't match pattern. (Ingo Karkat)
      Solution: When adding a state also check for different PIM if the list of
      states has any state with a PIM.
      Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok


      *** ../vim-7.4a.038/src/regexp_nfa.c 2013-07-21 17:05:54.000000000 +0200
      --- src/regexp_nfa.c 2013-07-21 18:54:02.000000000 +0200
      ***************
      *** 3464,3469 ****
      --- 3464,3470 ----
      int n; /* nr of states currently in "t" */
      int len; /* max nr of states in "t" */
      int id; /* ID of the list */
      + int has_pim; /* TRUE when any state has a PIM */
      } nfa_list_T;

      #ifdef ENABLE_LOG
      ***************
      *** 3966,3972 ****
      /* This state is already in the list, don't add it again,
      * unless it is an MOPEN that is used for a backreference or
      * when there is a PIM. */
      ! if (!nfa_has_backref && pim == NULL)
      {
      skip_add:
      #ifdef ENABLE_LOG
      --- 3967,3973 ----
      /* This state is already in the list, don't add it again,
      * unless it is an MOPEN that is used for a backreference or
      * when there is a PIM. */
      ! if (!nfa_has_backref && pim == NULL && !l->has_pim)
      {
      skip_add:
      #ifdef ENABLE_LOG
      ***************
      *** 4012,4018 ****
      --- 4013,4022 ----
      if (pim == NULL)
      thread->pim.result = NFA_PIM_UNUSED;
      else
      + {
      copy_pim(&thread->pim, pim);
      + l->has_pim = TRUE;
      + }
      copy_sub(&thread->subs.norm, &subs->norm);
      #ifdef FEAT_SYN_HL
      if (nfa_has_zsubexpr)
      ***************
      *** 5060,5067 ****
      --- 5064,5073 ----

      thislist = &list[0];
      thislist->n = 0;
      + thislist->has_pim = FALSE;
      nextlist = &list[1];
      nextlist->n = 0;
      + nextlist->has_pim = FALSE;
      #ifdef ENABLE_LOG
      fprintf(log_fd, "(---) STARTSTATE first\n");
      #endif
      ***************
      *** 5120,5125 ****
      --- 5126,5132 ----
      thislist = &list[flag];
      nextlist = &list[flag ^= 1];
      nextlist->n = 0; /* clear nextlist */
      + nextlist->has_pim = FALSE;
      ++nfa_listid;
      thislist->id = nfa_listid;
      nextlist->id = nfa_listid + 1;
      *** ../vim-7.4a.038/src/testdir/test64.in 2013-07-21 17:05:54.000000000 +0200
      --- src/testdir/test64.in 2013-07-21 18:53:22.000000000 +0200
      ***************
      *** 341,346 ****
      --- 341,347 ----
      :call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo xxx ', 'foo'])
      :call add(tl, [2, '[ ]\@!\p\%([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:'])
      :call add(tl, [2, 'm\k\+_\@=\%(_\@!\k\)\@<=\k\+e', 'mx__xe', 'mx__xe'])
      + :call add(tl, [2, '\%(\U\@<=S\k*\|S\l\)R', 'SuR', 'SuR'])
      :"
      :"""" Combining different tests and features
      :call add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab'])
      *** ../vim-7.4a.038/src/testdir/test64.ok 2013-07-21 17:05:54.000000000 +0200
      --- src/testdir/test64.ok 2013-07-21 18:55:44.000000000 +0200
      ***************
      *** 779,784 ****
      --- 779,787 ----
      OK 0 - m\k\+_\@=\%(_\@!\k\)\@<=\k\+e
      OK 1 - m\k\+_\@=\%(_\@!\k\)\@<=\k\+e
      OK 2 - m\k\+_\@=\%(_\@!\k\)\@<=\k\+e
      + OK 0 - \%(\U\@<=S\k*\|S\l\)R
      + OK 1 - \%(\U\@<=S\k*\|S\l\)R
      + OK 2 - \%(\U\@<=S\k*\|S\l\)R
      OK 0 - [[:alpha:]]\{-2,6}
      OK 1 - [[:alpha:]]\{-2,6}
      OK 2 - [[:alpha:]]\{-2,6}
      *** ../vim-7.4a.038/src/version.c 2013-07-21 17:53:54.000000000 +0200
      --- src/version.c 2013-07-21 18:56:02.000000000 +0200
      ***************
      *** 729,730 ****
      --- 729,732 ----
      { /* Add new patch number below this line */
      + /**/
      + 39,
      /**/

      --
      Everybody wants to go to heaven, but nobody wants to die.

      /// Bram Moolenaar -- Bram@... -- 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 ///

      --
      --
      You received this message from the "vim_dev" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php

      ---
      You received this message because you are subscribed to the Google Groups "vim_dev" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    Your message has been successfully submitted and would be delivered to recipients shortly.