From 8c622e345a0bfa074e220513463d4b51160c12f9 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Wed, 29 Jan 2020 14:21:00 -0300 Subject: [PATCH] Fixing segfault on page-down accelerator. --- src/terminal/keyboard/accelerator.c | 3 +++ src/terminal/keyboard/init.c | 10 ++++++++++ src/terminal/keyboard/keyfile.c | 5 ----- src/terminal/keyboard/private.h | 1 - 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/terminal/keyboard/accelerator.c b/src/terminal/keyboard/accelerator.c index b52faf9..a0ac526 100644 --- a/src/terminal/keyboard/accelerator.c +++ b/src/terminal/keyboard/accelerator.c @@ -55,6 +55,7 @@ { V3270PFKeyAccelerator * customAccel = g_new0(V3270PFKeyAccelerator,1); *customAccel = *((V3270PFKeyAccelerator *) accel); + customAccel->parent.arg = (gconstpointer) customAccel; rc = (V3270Accelerator *) customAccel; } break; @@ -105,6 +106,8 @@ { int rc = ((int (*)(GtkWidget *, gconstpointer)) acel->activate)(terminal, acel->arg); + debug("%s(%s)=%d (%s)",__FUNCTION__,v3270_accelerator_get_name(acel),rc,strerror(rc)); + if(rc) gdk_display_beep(gtk_widget_get_display(terminal)); diff --git a/src/terminal/keyboard/init.c b/src/terminal/keyboard/init.c index 32a0d4b..e5d0c24 100644 --- a/src/terminal/keyboard/init.c +++ b/src/terminal/keyboard/init.c @@ -89,6 +89,14 @@ } + static int fire_pfkey_action(GtkWidget *widget, V3270PFKeyAccelerator *accel) + { + debug("%s accel=%p",__FUNCTION__,accel); + debug("%s Accelerator(%s)=%p pfkey=%d",__FUNCTION__,accel->name,accel,accel->keycode); + + return lib3270_pfkey(v3270_get_session(widget),(int) accel->keycode); + } + void v3270_init_accelerators(v3270 *widget) { size_t ix; @@ -218,6 +226,8 @@ accelerator->parent.arg = (gconstpointer) accelerator; accelerator->parent.activate = G_CALLBACK(fire_pfkey_action); + debug("%s Accelerator(%s)=%p pfkey=%d",__FUNCTION__,accelerator->name,accelerator,accelerator->keycode); + widget->accelerators = g_slist_prepend(widget->accelerators,accelerator); } diff --git a/src/terminal/keyboard/keyfile.c b/src/terminal/keyboard/keyfile.c index 43671ed..a829fda 100644 --- a/src/terminal/keyboard/keyfile.c +++ b/src/terminal/keyboard/keyfile.c @@ -89,11 +89,6 @@ } - int fire_pfkey_action(GtkWidget *widget, V3270PFKeyAccelerator *accel) - { - return lib3270_pfkey(v3270_get_session(widget),(int) accel->keycode); - } - void v3270_accelerator_map_set_entry(v3270 *terminal, const gchar *name, const gchar *keys) { V3270Accelerator * accel = NULL; diff --git a/src/terminal/keyboard/private.h b/src/terminal/keyboard/private.h index 974d7c0..58fd96d 100644 --- a/src/terminal/keyboard/private.h +++ b/src/terminal/keyboard/private.h @@ -46,7 +46,6 @@ #define GDK_NUMLOCK_MASK GDK_MOD2_MASK #endif - G_GNUC_INTERNAL int fire_pfkey_action(GtkWidget *widget, V3270PFKeyAccelerator *accel); -- libgit2 0.21.2