From 351d355835532dbea8430902977873e887dd1c12 Mon Sep 17 00:00:00 2001
From: Lucian Poston <lucian.poston@gmail.com>
Date: Wed, 6 Dec 2017 04:22:28 -0800
Subject: [PATCH] fix segfault in gcc-6

---
 src/gtkcompletionline.cc | 27 +++++++++++++++------------
 src/gtkcompletionline.h  |  2 +-
 2 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/src/gtkcompletionline.cc b/src/gtkcompletionline.cc
index eb324b5..537fafb 100644
--- a/src/gtkcompletionline.cc
+++ b/src/gtkcompletionline.cc
@@ -77,22 +77,25 @@ static gboolean
 on_key_press(GtkCompletionLine *cl, GdkEventKey *event, gpointer data);
 
 /* get_type */
-guint gtk_completion_line_get_type(void)
+GType gtk_completion_line_get_type(void)
 {
-  static guint type = 0;
+  static GType type = 0;
   if (type == 0)
   {
-    GtkTypeInfo type_info =
+    static const GTypeInfo type_info =
     {
-      "GtkCompletionLine",
-      sizeof(GtkCompletionLine),
       sizeof(GtkCompletionLineClass),
-      (GtkClassInitFunc)gtk_completion_line_class_init,
-      (GtkObjectInitFunc)gtk_completion_line_init,
-      /*(GtkArgSetFunc)*/NULL /* reserved */,
-      /*(GtkArgGetFunc)*/NULL /* reserved */
+      NULL,
+      NULL,
+      (GClassInitFunc)gtk_completion_line_class_init,
+      NULL,
+      NULL,
+      sizeof(GtkCompletionLine),
+      0,
+      (GInstanceInitFunc)gtk_completion_line_init,
+      NULL
     };
-    type = gtk_type_unique(gtk_entry_get_type(), &type_info);
+    type = g_type_register_static(GTK_TYPE_ENTRY, "GtkCompletionLine", &type_info, (GTypeFlags)0);
   }
   return type;
 }
@@ -114,7 +117,7 @@ gtk_completion_line_class_init(GtkCompletionLineClass *klass)
 
   gtk_completion_line_signals[NOTUNIQUE] =
     gtk_signal_new("notunique",
-                   GTK_RUN_FIRST, G_TYPE_FROM_CLASS(object_class),
+                  GTK_RUN_FIRST, G_TYPE_FROM_CLASS(object_class),
                    GTK_SIGNAL_OFFSET(GtkCompletionLineClass,
                                      notunique),
                    gtk_signal_default_marshaller, GTK_TYPE_NONE, 0);
@@ -778,7 +781,7 @@ complete_line(GtkCompletionLine *object)
 GtkWidget *
 gtk_completion_line_new()
 {
-  return GTK_WIDGET(gtk_type_new(gtk_completion_line_get_type()));
+  return GTK_WIDGET(g_object_new(gtk_completion_line_get_type(), NULL));
 }
 
 static void
diff --git a/src/gtkcompletionline.h b/src/gtkcompletionline.h
index 5e14cd7..0d7f2dc 100644
--- a/src/gtkcompletionline.h
+++ b/src/gtkcompletionline.h
@@ -76,7 +76,7 @@ extern "C++" {
     void (* cancel)(GtkCompletionLine *cl);
   };
 
-  guint gtk_completion_line_get_type(void);
+  GType gtk_completion_line_get_type(void);
   GtkWidget *gtk_completion_line_new();
 
   void gtk_completion_line_last_history_item(GtkCompletionLine*);
-- 
2.13.6