aboutsummaryrefslogtreecommitdiffstats
path: root/debian/patches/120_config-file-handling.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/120_config-file-handling.patch')
-rw-r--r--debian/patches/120_config-file-handling.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/debian/patches/120_config-file-handling.patch b/debian/patches/120_config-file-handling.patch
new file mode 100644
index 0000000..ded2c85
--- /dev/null
+++ b/debian/patches/120_config-file-handling.patch
@@ -0,0 +1,38 @@
+Description: Fix segfault when changing options if ~/.w3m not accessible
+Origin: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=366284#5
+Author: Karsten Schoelzel <kuser@gmx.de>
+Bug-Debian: http://bugs.debian.org/366284
+
+diff --git a/rc.c b/rc.c
+index 17f30d8..b88a3fd 100644
+--- a/rc.c
++++ b/rc.c
+@@ -1253,7 +1253,7 @@ init_rc(void)
+ interpret_rc(f);
+ fclose(f);
+ }
+- if ((f = fopen(config_file, "rt")) != NULL) {
++ if (config_file && (f = fopen(config_file, "rt")) != NULL) {
+ interpret_rc(f);
+ fclose(f);
+ }
+@@ -1265,6 +1265,8 @@ init_rc(void)
+ ((tmp_dir = getenv("TMP")) == NULL || *tmp_dir == '\0') &&
+ ((tmp_dir = getenv("TEMP")) == NULL || *tmp_dir == '\0'))
+ tmp_dir = "/tmp";
++ create_option_search_table();
++ goto open_rc;
+ }
+
+
+@@ -1446,8 +1448,8 @@ panel_set_option(struct parsed_tagarg *a
+ FILE *f = NULL;
+ char *p;
+
+- if (no_rc_dir) {
+- disp_message("There's no ~/.w3m directory... config not saved", FALSE);
++ if (config_file == NULL) {
++ disp_message("There's no config file... config not saved", FALSE);
+ }
+ else {
+ f = fopen(config_file, "wt");