mirror of
https://github.com/MidnightCommander/mc
synced 2025-01-03 18:14:25 +03:00
Ticket #2795: hex search: can't find 00 (zeroes) in patterns.
Don't interpret the '0' character as end of search pattern. Use pattern length for that. Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
parent
0646ab6457
commit
13398647ed
@ -162,7 +162,7 @@ mc_fhl_parse_get_extensions (mc_fhl_t * fhl, const gchar * group_name)
|
||||
|
||||
mc_filter = g_new0 (mc_fhl_filter_t, 1);
|
||||
mc_filter->type = MC_FLHGH_T_FREGEXP;
|
||||
mc_filter->search_condition = mc_search_new (buf->str, -1);
|
||||
mc_filter->search_condition = mc_search_new (buf->str, buf->len);
|
||||
mc_filter->search_condition->is_case_sensitive =
|
||||
mc_config_get_bool (fhl->config, group_name, "extensions_case", TRUE);
|
||||
mc_filter->search_condition->search_type = MC_SEARCH_T_REGEX;
|
||||
|
@ -259,9 +259,8 @@ mc_search__regex_found_cond_one (mc_search_t * lc_mc_search, mc_search_regex_t *
|
||||
#ifdef SEARCH_TYPE_GLIB
|
||||
GError *error = NULL;
|
||||
|
||||
if (!g_regex_match_full
|
||||
(regex, search_str->str, -1, 0, G_REGEX_MATCH_NEWLINE_ANY, &lc_mc_search->regex_match_info,
|
||||
&error))
|
||||
if (!g_regex_match_full (regex, search_str->str, search_str->len, 0, G_REGEX_MATCH_NEWLINE_ANY,
|
||||
&lc_mc_search->regex_match_info, &error))
|
||||
{
|
||||
g_match_info_free (lc_mc_search->regex_match_info);
|
||||
lc_mc_search->regex_match_info = NULL;
|
||||
@ -278,7 +277,7 @@ mc_search__regex_found_cond_one (mc_search_t * lc_mc_search, mc_search_regex_t *
|
||||
lc_mc_search->num_results = g_match_info_get_match_count (lc_mc_search->regex_match_info);
|
||||
#else /* SEARCH_TYPE_GLIB */
|
||||
lc_mc_search->num_results = pcre_exec (regex, lc_mc_search->regex_match_info,
|
||||
search_str->str, search_str->len - 1, 0, 0,
|
||||
search_str->str, search_str->len, 0, 0,
|
||||
lc_mc_search->iovector, MC_SEARCH__NUM_REPLACE_ARGS);
|
||||
if (lc_mc_search->num_results < 0)
|
||||
{
|
||||
@ -827,13 +826,8 @@ mc_search__run_regex (mc_search_t * lc_mc_search, const void *user_data,
|
||||
|
||||
g_string_append_c (lc_mc_search->regex_buffer, (char) current_chr);
|
||||
|
||||
|
||||
if (current_chr == 0 || (char) current_chr == '\n')
|
||||
if ((char) current_chr == '\n' || virtual_pos > end_search)
|
||||
break;
|
||||
|
||||
if (virtual_pos > end_search)
|
||||
break;
|
||||
|
||||
}
|
||||
switch (mc_search__regex_found_cond (lc_mc_search, lc_mc_search->regex_buffer))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user