Merge branch '1858_segfault_in_search'

* 1858_segfault_in_search:
  Ticket #1858: Segmentation fault when search in different encodings
This commit is contained in:
Slava Zanko 2009-12-07 13:47:36 +02:00
commit 7f82f32404
2 changed files with 10 additions and 12 deletions

View File

@ -67,11 +67,19 @@ mc_search__recode_str (const char *str, gsize str_len,
}
conv = g_iconv_open (charset_to, charset_from);
if (conv == INVALID_CONV)
return NULL;
if (conv == INVALID_CONV) {
*bytes_written = str_len;
return g_strndup (str, str_len);
}
ret = g_convert_with_iconv (str, str_len, conv, &bytes_read, bytes_written, NULL);
g_iconv_close (conv);
if (ret == NULL) {
*bytes_written = str_len;
return g_strndup (str, str_len);
}
return ret;
}
@ -152,8 +160,6 @@ mc_search__tolower_case_str (const char *charset, const char *str, gsize str_len
tmp_str2 = converted_str =
mc_search__recode_str (str, str_len, charset, cp_display, &converted_str_len);
if (converted_str == NULL)
return NULL;
tmp_len = converted_str_len + 1;
@ -166,8 +172,6 @@ mc_search__tolower_case_str (const char *charset, const char *str, gsize str_len
tmp_str2 =
mc_search__recode_str (converted_str, converted_str_len, cp_display, charset, &tmp_len);
g_free (converted_str);
if (tmp_str2 == NULL)
return NULL;
ret = g_string_new_len (tmp_str2, tmp_len);
g_free (tmp_str2);
@ -206,8 +210,6 @@ mc_search__toupper_case_str (const char *charset, const char *str, gsize str_len
tmp_str2 = converted_str =
mc_search__recode_str (str, str_len, charset, cp_display, &converted_str_len);
if (converted_str == NULL)
return NULL;
tmp_len = converted_str_len + 1;
@ -221,8 +223,6 @@ mc_search__toupper_case_str (const char *charset, const char *str, gsize str_len
tmp_str2 =
mc_search__recode_str (converted_str, converted_str_len, cp_display, charset, &tmp_len);
g_free (converted_str);
if (tmp_str2 == NULL)
return NULL;
ret = g_string_new_len (tmp_str2, tmp_len);
g_free (tmp_str2);

View File

@ -197,8 +197,6 @@ mc_search_prepare (mc_search_t * lc_mc_search)
buffer =
mc_search__recode_str (lc_mc_search->original, lc_mc_search->original_len, cp_source,
codepages[loop1].id, &recoded_str_len);
if (buffer == NULL)
continue;
g_ptr_array_add (ret,
mc_search__cond_struct_new (lc_mc_search, buffer,