about summary refs log tree commit diff stats
path: root/src/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common.c')
-rw-r--r--src/common.c15
1 files 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));
             }