talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 17a2e58047a50a92b60ba544673b4ecc365a9420
parent aecd382fde51be4e9bb3c68de70bf800a38590f0
Author: Oliver Lowe <o@olowe.co>
Date:   Fri,  5 Sep 2025 12:54:07 +1000

Allocate the known max length for labels from URLs

The function didn't actually do anything

Diffstat:
Msrc/common/defs.h | 3---
Msrc/gtk/menu.c | 19-------------------
Msrc/gtk/menu.h | 3+--
Msrc/mainwindow.c | 12+++++++++---
4 files changed, 10 insertions(+), 27 deletions(-)

diff --git a/src/common/defs.h b/src/common/defs.h @@ -102,9 +102,6 @@ #define VSPACING_NARROW_2 2 #define VBOX_BORDER 8 #define DEFAULT_ENTRY_WIDTH 80 -/* labels bigger than this causes crash with the X Window System error: - 'BadAlloc (insufficient resources for operation)' */ -#define MAX_MENU_LABEL_LENGTH 5453 #define DEFAULT_PIXMAP_THEME "INTERNAL_DEFAULT" diff --git a/src/gtk/menu.c b/src/gtk/menu.c @@ -111,25 +111,6 @@ gchar *cm_menu_item_get_shortcut(GtkUIManager *gui_manager, gchar *menu) } -GtkWidget *cm_menu_item_new_label_from_url(gchar *url) -{ - gint len = strlen(url); - if (len > MAX_MENU_LABEL_LENGTH) { - g_message("Refusing a %d bytes string as menu label\n", len); - url[64] = '\0', url[63] = url[62] = url[61] = '.', url[60] = ' '; - GtkWidget *newlabel = gtk_menu_item_new_with_label(url); - gtk_widget_set_tooltip_markup(GTK_WIDGET(newlabel), - g_strconcat("<span><b>", _("Warning:"), "</b>", - _("This URL was too long for displaying and\n" - "has been truncated for safety. This message could be\n" - "corrupted, malformed or part of some DoS attempt."), - "</span>", NULL)); - return newlabel; - } - - return gtk_menu_item_new_with_label(url); -} - void cm_toggle_menu_set_active_full(GtkUIManager *gui_manager, gchar *menu, gboolean active) { GtkWidget *widget; diff --git a/src/gtk/menu.h b/src/gtk/menu.h @@ -14,7 +14,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * */ #ifndef __MENU_H__ @@ -91,7 +91,6 @@ void cm_toggle_menu_set_active(gchar *menu, gboolean active); void cm_menu_set_sensitive_full(GtkUIManager *gui_manager, const gchar *menu, gboolean sensitive); void cm_toggle_menu_set_active_full(GtkUIManager *gui_manager, gchar *menu, gboolean active); gchar *cm_menu_item_get_shortcut(GtkUIManager *gui_manager, gchar *menu); -GtkWidget *cm_menu_item_new_label_from_url(gchar *label); void menu_set_sensitive_all(GtkMenuShell *menu_shell, gboolean sensitive); diff --git a/src/mainwindow.c b/src/mainwindow.c @@ -75,6 +75,12 @@ #include "socket.h" #include "send_message.h" +/* + * longer labels crash the X Window System with error: + * 'BadAlloc (insufficient resources for operation)' + */ +#define MAX_MENU_LABEL_LENGTH 5453 + /* list of all instantiated MainWindow */ static GList *mainwin_list = NULL; @@ -2571,7 +2577,7 @@ static gint mailing_list_populate_submenu (GtkWidget *menuitem, const gchar * li { GtkWidget *item, *menu; const gchar *url_pt ; - gchar url_decoded[BUFFSIZE]; + gchar url_decoded[MAX_MENU_LABEL_LENGTH]; GList *children, *amenu; gint menu_nb = 0; @@ -2590,7 +2596,7 @@ static gint mailing_list_populate_submenu (GtkWidget *menuitem, const gchar * li get_url_part (&url_pt, url_decoded); item = NULL; if (!g_ascii_strncasecmp(url_decoded, "mailto:", 7)) { - item = cm_menu_item_new_label_from_url ((url_decoded)); + item = gtk_menu_item_new_with_label(url_decoded); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(mailing_list_compose), NULL); @@ -2598,7 +2604,7 @@ static gint mailing_list_populate_submenu (GtkWidget *menuitem, const gchar * li else if (!g_ascii_strncasecmp(url_decoded, "http:", 5) || !g_ascii_strncasecmp(url_decoded, "https:",6)) { - item = cm_menu_item_new_label_from_url ((url_decoded)); + item = gtk_menu_item_new_with_label(url_decoded); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(mailing_list_open_uri), NULL);