Mercurial > vim
comparison src/eval.c @ 4805:66803af09906 v7.3.1149
updated for version 7.3.1149
Problem: New regexp engine: Matching plain text could be faster.
Solution: Detect a plain text match and handle it specifically. Add
vim_regfree().
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Sat, 08 Jun 2013 18:19:48 +0200 |
parents | 343d09006056 |
children | 8c4324e6f477 |
comparison
equal
deleted
inserted
replaced
4804:62663cfeb216 | 4805:66803af09906 |
---|---|
4558 RE_MAGIC + RE_STRING); | 4558 RE_MAGIC + RE_STRING); |
4559 regmatch.rm_ic = ic; | 4559 regmatch.rm_ic = ic; |
4560 if (regmatch.regprog != NULL) | 4560 if (regmatch.regprog != NULL) |
4561 { | 4561 { |
4562 n1 = vim_regexec_nl(®match, s1, (colnr_T)0); | 4562 n1 = vim_regexec_nl(®match, s1, (colnr_T)0); |
4563 vim_free(regmatch.regprog); | 4563 vim_regfree(regmatch.regprog); |
4564 if (type == TYPE_NOMATCH) | 4564 if (type == TYPE_NOMATCH) |
4565 n1 = !n1; | 4565 n1 = !n1; |
4566 } | 4566 } |
4567 p_cpo = save_cpo; | 4567 p_cpo = save_cpo; |
4568 break; | 4568 break; |
13979 rettv->vval.v_number = | 13979 rettv->vval.v_number = |
13980 (varnumber_T)(regmatch.endp[0] - str); | 13980 (varnumber_T)(regmatch.endp[0] - str); |
13981 rettv->vval.v_number += (varnumber_T)(str - expr); | 13981 rettv->vval.v_number += (varnumber_T)(str - expr); |
13982 } | 13982 } |
13983 } | 13983 } |
13984 vim_free(regmatch.regprog); | 13984 vim_regfree(regmatch.regprog); |
13985 } | 13985 } |
13986 | 13986 |
13987 theend: | 13987 theend: |
13988 vim_free(tofree); | 13988 vim_free(tofree); |
13989 p_cpo = save_cpo; | 13989 p_cpo = save_cpo; |
17212 #endif | 17212 #endif |
17213 } | 17213 } |
17214 str = regmatch.endp[0]; | 17214 str = regmatch.endp[0]; |
17215 } | 17215 } |
17216 | 17216 |
17217 vim_free(regmatch.regprog); | 17217 vim_regfree(regmatch.regprog); |
17218 } | 17218 } |
17219 | 17219 |
17220 p_cpo = save_cpo; | 17220 p_cpo = save_cpo; |
17221 } | 17221 } |
17222 | 17222 |
21064 if (!isdigit(*fp->uf_name) | 21064 if (!isdigit(*fp->uf_name) |
21065 && vim_regexec(®match, fp->uf_name, 0)) | 21065 && vim_regexec(®match, fp->uf_name, 0)) |
21066 list_func_head(fp, FALSE); | 21066 list_func_head(fp, FALSE); |
21067 } | 21067 } |
21068 } | 21068 } |
21069 vim_free(regmatch.regprog); | 21069 vim_regfree(regmatch.regprog); |
21070 } | 21070 } |
21071 } | 21071 } |
21072 if (*p == '/') | 21072 if (*p == '/') |
21073 ++p; | 21073 ++p; |
21074 eap->nextcmd = check_nextcmd(p); | 21074 eap->nextcmd = check_nextcmd(p); |
24218 } | 24218 } |
24219 | 24219 |
24220 if (ga.ga_data != NULL) | 24220 if (ga.ga_data != NULL) |
24221 STRCPY((char *)ga.ga_data + ga.ga_len, tail); | 24221 STRCPY((char *)ga.ga_data + ga.ga_len, tail); |
24222 | 24222 |
24223 vim_free(regmatch.regprog); | 24223 vim_regfree(regmatch.regprog); |
24224 } | 24224 } |
24225 | 24225 |
24226 ret = vim_strsave(ga.ga_data == NULL ? str : (char_u *)ga.ga_data); | 24226 ret = vim_strsave(ga.ga_data == NULL ? str : (char_u *)ga.ga_data); |
24227 ga_clear(&ga); | 24227 ga_clear(&ga); |
24228 if (p_cpo == empty_option) | 24228 if (p_cpo == empty_option) |