Patch 7.2b.004

4 views
Skip to first unread message

Bram Moolenaar

unread,
Jul 14, 2008, 5:04:31 PM7/14/08
to vim...@vim.org

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

Reply all
Reply to author
Forward
0 new messages