From 5cc5734ba05eb623e01240326caff1ef335a2b50 Mon Sep 17 00:00:00 2001 From: ben Date: Mon, 12 Sep 2005 15:45:29 +0000 Subject: [PATCH] When the first element in a preference list was unrecognised, PuTTY would hang when reading it because strtok() kept getting the full list passed in. Fix this, and add an assert() for an assumption documented in a comment while I'm in the area. git-svn-id: svn://svn.tartarus.org/sgt/putty@6294 cda61777-01e9-0310-a592-d414129be87e --- settings.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/settings.c b/settings.c index c2fd1b4e..45784a22 100644 --- a/settings.c +++ b/settings.c @@ -2,6 +2,7 @@ * settings.c: read and write saved sessions. (platform-independent) */ +#include #include #include #include "putty.h" @@ -172,6 +173,7 @@ static void gprefs(void *sesskey, char *name, char *def, int *array) { char commalist[80]; + char *tokarg = commalist; int n; unsigned long seen = 0; /* bitmap for weeding dups etc */ gpps(sesskey, name, def, commalist, sizeof(commalist)); @@ -181,7 +183,8 @@ static void gprefs(void *sesskey, char *name, char *def, do { int v; char *key; - key = strtok(n==0 ? commalist : NULL, ","); /* sorry */ + key = strtok(tokarg, ","); /* sorry */ + tokarg = NULL; if (!key) break; if (((v = key2val(mapping, nvals, key)) != -1) && !(seen & 1<