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(&regmatch, s1, (colnr_T)0); 4562 n1 = vim_regexec_nl(&regmatch, 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(&regmatch, fp->uf_name, 0)) 21065 && vim_regexec(&regmatch, 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)