From 3e18aab9f38fad3cd971ec09684f7e03f299cc87 Mon Sep 17 00:00:00 2001 From: James Booth Date: Fri, 28 Apr 2017 21:41:55 +0100 Subject: [PATCH] Use g_utf8_find_ functions for prof_occurrences issue #901 --- src/common.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/common.c b/src/common.c index d9c7d73f..c4b6ace9 100644 --- a/src/common.c +++ b/src/common.c @@ -467,11 +467,18 @@ prof_occurrences(const char *const needle, const char *const haystack, int offse gchar *needle_last_ch = g_utf8_offset_to_pointer(needle, g_utf8_strlen(needle, -1)- 1); int needle_last_ch_len = mblen(needle_last_ch, MB_CUR_MAX); - gchar *haystack_before_ch = g_utf8_prev_char(haystack_curr); - gchar *haystack_after_ch = g_utf8_next_char(haystack_curr + strlen(needle) - needle_last_ch_len); + gunichar before = NULL; + gchar *haystack_before_ch = g_utf8_find_prev_char(haystack, haystack_curr); + if (haystack_before_ch) { + before = g_utf8_get_char(haystack_before_ch); + } + + gunichar after = NULL; + gchar *haystack_after_ch = g_utf8_find_next_char(haystack_curr + strlen(needle) - needle_last_ch_len, NULL); + if (haystack_after_ch) { + after = g_utf8_get_char(haystack_after_ch); + } - gunichar before = g_utf8_get_char(haystack_before_ch); - gunichar after = g_utf8_get_char(haystack_after_ch); if (!g_unichar_isalnum(before) && !g_unichar_isalnum(after)) { *result = g_slist_append(*result, GINT_TO_POINTER(offset)); }