keyboard: Don't use next_utf8_char() to go back where we came from
authorKristian Høgsberg <krh@bitplanet.net>
Thu, 15 Aug 2013 18:37:09 +0000 (11:37 -0700)
committerKristian Høgsberg <krh@bitplanet.net>
Thu, 15 Aug 2013 18:37:14 +0000 (11:37 -0700)
We go one utf8 char back and then one forward.  Just remember the original
position instead, which also avoids a warning about potentially
dereferencing a NULL return value from next_utf8_char().

clients/keyboard.c

index 9c5cbc5..a6f7010 100644 (file)
@@ -456,16 +456,6 @@ prev_utf8_char(const char *s, const char *p)
        return NULL;
 }
 
-static const char *
-next_utf8_char(const char *p)
-{
-       if (*p == '\0')
-               return NULL;
-       for (++p; (*p & 0xc0) == 0x80; ++p)
-               ;
-       return p;
-}
-
 static void
 delete_before_cursor(struct virtual_keyboard *keyboard)
 {
@@ -483,7 +473,7 @@ delete_before_cursor(struct virtual_keyboard *keyboard)
                return;
        }
 
-       end = next_utf8_char(start);
+       end = keyboard->surrounding_text + keyboard->surrounding_cursor;
 
        wl_input_method_context_delete_surrounding_text(keyboard->context,
                                                        (start - keyboard->surrounding_text) - keyboard->surrounding_cursor,