From 192faa217735d0ab06aeed02a01558f5c95aef72 Mon Sep 17 00:00:00 2001 From: Rob Kendrick Date: Tue, 1 Jul 2008 15:08:10 +0000 Subject: Fix segfault caused by using tab to leave proxy port entry widget in nsgtk svn path=/trunk/netsurf/; revision=4491 --- gtk/dialogs/gtk_options.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'gtk') diff --git a/gtk/dialogs/gtk_options.c b/gtk/dialogs/gtk_options.c index 8a85c0ae6..e7ed37eec 100644 --- a/gtk/dialogs/gtk_options.c +++ b/gtk/dialogs/gtk_options.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include "utils/log.h" @@ -309,10 +310,25 @@ COMBO_CHANGED(comboProxyType, proxy_type) ENTRY_CHANGED(entryProxyHost, option_http_proxy_host)} return FALSE;} -ENTRY_CHANGED(entryProxyPort, proxy_port) - option_http_proxy_port = atoi(proxy_port); - free(proxy_port);} - return FALSE;} + +gboolean on_entryProxyPort_changed(GtkWidget *widget, gpointer data) +{ + long port; + + errno = 0; + port = strtol((char *)gtk_entry_get_text(GTK_ENTRY(entryProxyPort)), + NULL, 10) & 0xffff; + if (port != 0 && errno == 0) { + option_http_proxy_port = port; + } else { + char buf[32]; + snprintf(buf, 31, "%d", option_http_proxy_port); + SET_ENTRY(entryProxyPort, buf); + } + + return FALSE; +} + ENTRY_CHANGED(entryProxyUser, option_http_proxy_auth_user)} return FALSE;} ENTRY_CHANGED(entryProxyPassword, option_http_proxy_auth_pass)} -- cgit v1.2.3