diff options
author | Rob Kendrick <rjek@netsurf-browser.org> | 2008-07-01 15:08:10 +0000 |
---|---|---|
committer | Rob Kendrick <rjek@netsurf-browser.org> | 2008-07-01 15:08:10 +0000 |
commit | 192faa217735d0ab06aeed02a01558f5c95aef72 (patch) | |
tree | bbd5ed8e2b4dc532cb232b0663687ad844783404 /gtk | |
parent | 489392eeeb7c9304e1d1a3ef2fcc00156bfc2032 (diff) | |
download | netsurf-192faa217735d0ab06aeed02a01558f5c95aef72.tar.gz netsurf-192faa217735d0ab06aeed02a01558f5c95aef72.tar.bz2 |
Fix segfault caused by using tab to leave proxy port entry widget in nsgtk
svn path=/trunk/netsurf/; revision=4491
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/dialogs/gtk_options.c | 24 |
1 files changed, 20 insertions, 4 deletions
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 <stdio.h> #include <stdlib.h> #include <string.h> +#include <errno.h> #include <gtk/gtk.h> #include <glade/glade.h> #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)} |