https://bugs.gentoo.org/978277
--- a/xs/GtkEntryBuffer.xs
+++ b/xs/GtkEntryBuffer.xs
@@ -41,13 +41,16 @@
 =for arg initial_chars (string)
 =cut
 GtkEntryBuffer_noinc *
-gtk_entry_buffer_new (class, const gchar_utf8_length *initial_chars=NULL, gint length(initial_chars))
+gtk_entry_buffer_new (class, SV *initial_chars=NULL)
     CODE:
         if (initial_chars == NULL) {
                 RETVAL = gtk_entry_buffer_new (NULL, 0);
         }
         else {
-                RETVAL = gtk_entry_buffer_new (initial_chars, XSauto_length_of_initial_chars);
+                STRLEN length_bytes;
+                const char *buf = SvPVutf8(initial_chars, length_bytes);
+                gint length_chars = g_utf8_strlen(buf, length_bytes);
+                RETVAL = gtk_entry_buffer_new (buf, length_chars);
         }
     OUTPUT:
         RETVAL
