From 69cebb9984066f11dc56d6c87b89d7089f677585 Mon Sep 17 00:00:00 2001 From: Andrew Borodin Date: Thu, 21 Oct 2010 17:09:07 +0400 Subject: [PATCH] mc_search__cond_struct_new_regex_ci_str(): get rid of extra string duplication. Signed-off-by: Andrew Borodin Signed-off-by: Slava Zanko --- lib/search/regex.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/lib/search/regex.c b/lib/search/regex.c index fe928599c..2e40f6035 100644 --- a/lib/search/regex.c +++ b/lib/search/regex.c @@ -196,12 +196,8 @@ mc_search__cond_struct_new_regex_accum_append (const char *charset, GString * st static GString * mc_search__cond_struct_new_regex_ci_str (const char *charset, const GString *astr) { - const char *str = astr->str; GString *accumulator, *spec_char, *ret_str; gsize loop; - GString *tmp; - tmp = g_string_new_len (str, astr->len); - ret_str = g_string_new (""); accumulator = g_string_new (""); @@ -210,7 +206,7 @@ mc_search__cond_struct_new_regex_ci_str (const char *charset, const GString *ast while (loop <= astr->len) { - if (mc_search__regex_str_append_if_special (spec_char, tmp, &loop)) + if (mc_search__regex_str_append_if_special (spec_char, astr, &loop)) { mc_search__cond_struct_new_regex_accum_append (charset, ret_str, accumulator); g_string_append_len (ret_str, spec_char->str, spec_char->len); @@ -218,32 +214,32 @@ mc_search__cond_struct_new_regex_ci_str (const char *charset, const GString *ast continue; } - if (tmp->str[loop] == '[' && !strutils_is_char_escaped (tmp->str, &(tmp->str[loop]))) + if (astr->str[loop] == '[' && !strutils_is_char_escaped (astr->str, &(astr->str[loop]))) { mc_search__cond_struct_new_regex_accum_append (charset, ret_str, accumulator); - while (loop < astr->len && !(tmp->str[loop] == ']' - && !strutils_is_char_escaped (tmp->str, &(tmp->str[loop])))) + while (loop < astr->len && !(astr->str[loop] == ']' + && !strutils_is_char_escaped (astr->str, &(astr->str[loop])))) { - g_string_append_c (ret_str, tmp->str[loop]); + g_string_append_c (ret_str, astr->str[loop]); loop++; } - g_string_append_c (ret_str, tmp->str[loop]); + g_string_append_c (ret_str, astr->str[loop]); loop++; continue; } /* TODO: handle [ and ] */ - g_string_append_c (accumulator, tmp->str[loop]); + g_string_append_c (accumulator, astr->str[loop]); loop++; } mc_search__cond_struct_new_regex_accum_append (charset, ret_str, accumulator); g_string_free (accumulator, TRUE); g_string_free (spec_char, TRUE); - g_string_free (tmp, TRUE); + return ret_str; } -- 2.11.4.GIT