Patch 7.2b.004
Problem:    Trying to free memory for a static string when using ":helpgrep".
            (George Reilly)
Solution:   Set 'cpo' to empty_option instead of an empty string.  Also for
            searchpair() and substitute().
Files:      src/quickfix.c, src/eval.c


*** ../vim-7.2b.003/src/quickfix.c      Sun Jul 13 19:15:19 2008
--- src/quickfix.c      Mon Jul 14 19:54:22 2008
***************
*** 3779,3785 ****
  
      /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
      save_cpo = p_cpo;
!     p_cpo = (char_u *)"";
  
  #ifdef FEAT_MULTI_LANG
      /* Check for a specified language */
--- 3779,3785 ----
  
      /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
      save_cpo = p_cpo;
!     p_cpo = empty_option;
  
  #ifdef FEAT_MULTI_LANG
      /* Check for a specified language */
***************
*** 3889,3895 ****
        qi->qf_lists[qi->qf_curlist].qf_index = 1;
      }
  
!     p_cpo = save_cpo;
  
  #ifdef FEAT_WINDOWS
      qf_update_buffer(qi);
--- 3889,3899 ----
        qi->qf_lists[qi->qf_curlist].qf_index = 1;
      }
  
!     if (p_cpo == empty_option)
!       p_cpo = save_cpo;
!     else
!       /* Darn, some plugin changed the value. */
!       free_string_option(save_cpo);
  
  #ifdef FEAT_WINDOWS
      qf_update_buffer(qi);
*** ../vim-7.2b.003/src/eval.c  Sun Jul 13 19:15:10 2008
--- src/eval.c  Mon Jul 14 23:03:12 2008
***************
*** 14997,15003 ****
  
      /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
      save_cpo = p_cpo;
!     p_cpo = (char_u *)"";
  
  #ifdef FEAT_RELTIME
      /* Set the time limit, if there is one. */
--- 14997,15003 ----
  
      /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
      save_cpo = p_cpo;
!     p_cpo = empty_option;
  
  #ifdef FEAT_RELTIME
      /* Set the time limit, if there is one. */
***************
*** 15112,15118 ****
  theend:
      vim_free(pat2);
      vim_free(pat3);
!     p_cpo = save_cpo;
  
      return retval;
  }
--- 15112,15122 ----
  theend:
      vim_free(pat2);
      vim_free(pat3);
!     if (p_cpo == empty_option)
!       p_cpo = save_cpo;
!     else
!       /* Darn, evaluating the {skip} expression changed the value. */
!       free_string_option(save_cpo);
  
      return retval;
  }
***************
*** 22503,22509 ****
  
      /* Make 'cpoptions' empty, so that the 'l' flag doesn't work here */
      save_cpo = p_cpo;
!     p_cpo = (char_u *)"";
  
      ga_init2(&ga, 1, 200);
  
--- 22507,22513 ----
  
      /* Make 'cpoptions' empty, so that the 'l' flag doesn't work here */
      save_cpo = p_cpo;
!     p_cpo = empty_option;
  
      ga_init2(&ga, 1, 200);
  
***************
*** 22564,22570 ****
  
      ret = vim_strsave(ga.ga_data == NULL ? str : (char_u *)ga.ga_data);
      ga_clear(&ga);
!     p_cpo = save_cpo;
  
      return ret;
  }
--- 22568,22578 ----
  
      ret = vim_strsave(ga.ga_data == NULL ? str : (char_u *)ga.ga_data);
      ga_clear(&ga);
!     if (p_cpo == empty_option)
!       p_cpo = save_cpo;
!     else
!       /* Darn, evaluating {sub} expression changed the value. */
!       free_string_option(save_cpo);
  
      return ret;
  }
*** ../vim-7.2b.003/src/version.c       Mon Jul 14 21:47:27 2008
--- src/version.c       Mon Jul 14 23:01:13 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     4,
  /**/

-- 
Hear about the guy who played a blank tape at full blast?
The mime next door went nuts.

 /// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Raspunde prin e-mail lui