aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/search.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/search.c')
-rw-r--r--src/search.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/search.c b/src/search.c
index 81d2074..8ea97ad 100644
--- a/src/search.c
+++ b/src/search.c
@@ -574,7 +574,6 @@ teco_state_search_process(teco_machine_main_t *ctx, const teco_string_t *str, gs
!search_reg->vtable->set_integer(search_reg, TECO_FAILURE, error))
return FALSE;
- g_auto(regex_t) re = {0};
teco_string_t pattern = *str;
g_autofree gchar *re_pattern;
/* NOTE: teco_pattern2regexp() modifies str pointer */
@@ -585,20 +584,24 @@ teco_state_search_process(teco_machine_main_t *ctx, const teco_string_t *str, gs
#ifdef DEBUG
g_printf("REGEXP: %s\n", re_pattern);
#endif
- if (!*re_pattern)
- goto failure;
+ if (!*re_pattern) {
+ teco_interface_ssm(SCI_GOTOPOS, teco_search_parameters.dot, 0);
+ return TRUE;
+ }
+
/*
* FIXME: We don't have to escape null characters in re_pattern.
*/
+ g_auto(regex_t) re;
#if 0
gint rc = ctx->expectstring.machine.codepage == SC_CP_UTF8
- ? re_wcomp(&re, re_pattern, strlen(re_pattern), flags)
- : re_comp(&re, re_pattern, strlen(re_pattern), flags);
+ ? re_wcomp(&re, (guchar *)re_pattern, strlen(re_pattern), flags)
+ : re_comp(&re, (guchar *)re_pattern, strlen(re_pattern), flags);
#endif
// FIXME: Apparently this is the ASCII-only version, while re_wcomp() is the widechar version
// which expects UTF-32.
// This means that teco_pattern2regexp() would have to return an UTF-32 version.
- gint rc = re_comp(&re, re_pattern, strlen(re_pattern), flags);
+ gint rc = re_comp(&re, (guchar *)re_pattern, strlen(re_pattern), flags);
if (rc)
goto failure;