SNet Router Crash fix
- From: Stefan Westerfeld <stefan space twc de>
- To: Beast Liste <beast gnome org>
- Cc: Tim Janik <timj gnu org>
- Subject: SNet Router Crash fix
- Date: Thu, 27 Oct 2016 16:40:58 +0200
Hi!
BEAST has been crashing for me in the last git version, should be reproducable
by the following steps:
(1) start beast
(2) load BQS organ instrument
(3) in the snet router, RIGHT click on DavOrgan-1
-> crash
In any case, I tried to fix it myself, and this is the resulting patch:
diff --git a/beast-gtk/bstmenus.cc b/beast-gtk/bstmenus.cc
index a26bda0..1fdb0b5 100644
--- a/beast-gtk/bstmenus.cc
+++ b/beast-gtk/bstmenus.cc
@@ -10,7 +10,7 @@ struct BstChoice {
Bse::Icon bseicon;
String name;
void *p_id;
- BstChoice() : type_and_flags (BST_CHOICE_TYPE_SEPARATOR), icon_stock_id (NULL), name (NULL), p_id (NULL) {}
+ BstChoice() : type_and_flags (BST_CHOICE_TYPE_SEPARATOR), p_id (NULL) {}
};
@@ -136,7 +136,7 @@ bst_choice_menu_add_choice_and_free (GtkWidget *menu,
gxk_stock_image (choice->icon_stock_id.c_str(), GXK_ICON_SIZE_MENU));
any = gtk_widget_new (GTK_TYPE_ACCEL_LABEL,
"visible", TRUE,
- "label", choice->name,
+ "label", choice->name.c_str(),
"parent", item,
"accel_widget", item,
"xalign", 0.0,
@@ -230,7 +230,7 @@ bst_choice_dialog_createv (BstChoice *first_choice,
any = gtk_widget_new (GTK_TYPE_LABEL,
"visible", TRUE,
"justify", GTK_JUSTIFY_CENTER,
- "label", choice->name,
+ "label", choice->name.c_str(),
"wrap", FALSE,
NULL);
gtk_box_pack_start (GTK_BOX (vbox), any, TRUE, TRUE, 0);
@@ -269,7 +269,7 @@ bst_choice_dialog_createv (BstChoice *first_choice,
{
GtkWidget *any;
case BST_CHOICE_TYPE_TITLE:
- gtk_widget_set (dialog, "title", choice->name, NULL);
+ gtk_widget_set (dialog, "title", choice->name.c_str(), NULL);
break;
case BST_CHOICE_TYPE_ITEM:
any = gxk_dialog_action_multi (GXK_DIALOG (dialog), choice->name.c_str(),
diff --git a/beast-gtk/bstmenus.hh b/beast-gtk/bstmenus.hh
index 591eee9..705b059 100644
--- a/beast-gtk/bstmenus.hh
+++ b/beast-gtk/bstmenus.hh
@@ -48,7 +48,7 @@ void bst_choice_destroy (GtkWidget *choice);
#define BST_CHOICE_TEXT(name) (bst_choice_alloc (BST_CHOICE_TYPE_TEXT, \
(name), NULL, BST_STOCK_NONE, Bse::Icon()))
#define BST_CHOICE_SEPERATOR (bst_choice_alloc (BST_CHOICE_TYPE_SEPARATOR, \
- NULL, NULL, BST_STOCK_NONE, Bse::Icon()))
+ "", NULL, BST_STOCK_NONE, Bse::Icon()))
#define BST_CHOICE_END (NULL)
diff --git a/beast-gtk/bstutils.hh b/beast-gtk/bstutils.hh
index 08cbb96..adc4bcb 100644
--- a/beast-gtk/bstutils.hh
+++ b/beast-gtk/bstutils.hh
@@ -183,7 +183,7 @@ BstGMask* bst_gmask_quick (GtkWidget *gmask_container,
/* --- stock actions and aliases --- */
-#define BST_STOCK_NONE (NULL)
+#define BST_STOCK_NONE ("")
#define BST_STOCK_APPLY GTK_STOCK_APPLY
#define BST_STOCK_CANCEL GTK_STOCK_CANCEL
#define BST_STOCK_CDROM GTK_STOCK_CDROM
Why this is needed:
All changes I made directly avoid constructing a std::string with NULL as
argument. In some cases, I had to change NULL to "" to make it work. Even in
case that you cannot reproduce the crash, the changes should still be logically
necessary. (The varargs changes are not from me).
Cu... Stefan
--
Stefan Westerfeld, http://space.twc.de/~stefan
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]