summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorRob Kendrick <rjek@netsurf-browser.org>2008-07-01 15:08:10 +0000
committerRob Kendrick <rjek@netsurf-browser.org>2008-07-01 15:08:10 +0000
commit192faa217735d0ab06aeed02a01558f5c95aef72 (patch)
treebbd5ed8e2b4dc532cb232b0663687ad844783404 /gtk
parent489392eeeb7c9304e1d1a3ef2fcc00156bfc2032 (diff)
downloadnetsurf-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.c24
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)}