Cope with NULL labels in every control where it makes sense, and assert that
[sgt/putty] / settings.c
index c3f8c88..1de8e51 100644 (file)
@@ -141,15 +141,17 @@ static void wprefs(void *sesskey, char *name,
     write_setting_s(sesskey, name, buf);
 }
 
-void save_settings(char *section, int do_host, Config * cfg)
+char *save_settings(char *section, int do_host, Config * cfg)
 {
     void *sesskey;
+    char *errmsg;
 
-    sesskey = open_settings_w(section);
+    sesskey = open_settings_w(section, &errmsg);
     if (!sesskey)
-       return;
+       return errmsg;
     save_open_settings(sesskey, do_host, cfg);
     close_settings_w(sesskey);
+    return NULL;
 }
 
 void save_open_settings(void *sesskey, int do_host, Config *cfg)
@@ -631,10 +633,7 @@ void load_open_settings(void *sesskey, int do_host, Config *cfg)
 
 void do_defaults(char *session, Config * cfg)
 {
-    if (session)
-       load_settings(session, TRUE, cfg);
-    else
-       load_settings("Default Settings", FALSE, cfg);
+    load_settings(session, (session != NULL && *session), cfg);
 }
 
 static int sessioncmp(const void *av, const void *bv)
@@ -675,7 +674,7 @@ void get_sesslist(struct sesslist *list, int allocate)
                    int len = strlen(otherbuf) + 1;
                    if (bufsize < buflen + len) {
                        bufsize = buflen + len + 2048;
-                       list->buffer = srealloc(list->buffer, bufsize);
+                       list->buffer = sresize(list->buffer, bufsize, char);
                    }
                    strcpy(list->buffer + buflen, otherbuf);
                    buflen += strlen(list->buffer + buflen) + 1;
@@ -683,7 +682,7 @@ void get_sesslist(struct sesslist *list, int allocate)
            } while (ret);
            enum_settings_finish(handle);
        }
-       list->buffer = srealloc(list->buffer, buflen + 1);
+       list->buffer = sresize(list->buffer, buflen + 1, char);
        list->buffer[buflen] = '\0';
 
        /*
@@ -702,7 +701,7 @@ void get_sesslist(struct sesslist *list, int allocate)
            p++;
        }
 
-       list->sessions = smalloc((list->nsessions + 1) * sizeof(char *));
+       list->sessions = snewn(list->nsessions + 1, char *);
        list->sessions[0] = "Default Settings";
        p = list->buffer;
        i = 1;