[gnome-characters] searchProvider: Improve word boundary check



commit 507d549931126f7ab25b9808cff668bda41b6965
Author: Daiki Ueno <dueno src gnome org>
Date:   Wed Apr 6 14:57:33 2016 +0900

    searchProvider: Improve word boundary check
    
    GC_SEARCH_FLAG_WORD now takes into account of multiple keywords.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=747061#c10

 lib/gc.c |   25 ++++++++++++++++---------
 1 files changed, 16 insertions(+), 9 deletions(-)
---
diff --git a/lib/gc.c b/lib/gc.c
index 9705ccc..d304e0d 100644
--- a/lib/gc.c
+++ b/lib/gc.c
@@ -442,20 +442,27 @@ filter_keywords (GcCharacterIter *iter, ucs4_t uc)
     {
       const gchar *keyword = *keywords++;
       size_t length = strlen (keyword);
+      gchar *p;
 
       if (length >= UNINAME_MAX)
         return FALSE;
 
+      p = g_strstr_len (buffer, UNINAME_MAX, keyword);
+      if (!p)
+       return FALSE;
+
       if (iter->flags & GC_SEARCH_FLAG_WORD)
-        {
-          if (strncmp (buffer, keyword, strlen (keyword)) != 0)
-            return FALSE;
-        }
-      else
-        {
-          if (g_strstr_len (buffer, UNINAME_MAX, keyword) == NULL)
-            return FALSE;
-        }
+       {
+         while (p)
+           {
+             if (p == buffer || g_ascii_isspace (*(p - 1)))
+               break;
+             p = g_strstr_len (p + 1, UNINAME_MAX, keyword);
+           }
+
+         if (!p)
+           return FALSE;
+       }
     }
 
   return TRUE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]