Various error-handling fixes, mostly in Unix PuTTY but one (failure
[u/mdw/putty] / config.c
index 7b11e28..7204a6c 100644 (file)
--- a/config.c
+++ b/config.c
@@ -110,7 +110,7 @@ static void cipherlist_handler(union control *ctrl, void *dlg,
                    break;
                }
            }
-           dlg_listbox_addwithindex(ctrl, dlg, cstr, c);
+           dlg_listbox_addwithid(ctrl, dlg, cstr, c);
        }
        dlg_update_done(ctrl, dlg);
 
@@ -179,9 +179,9 @@ static void sshbug_handler(union control *ctrl, void *dlg,
     if (event == EVENT_REFRESH) {
        dlg_update_start(ctrl, dlg);
        dlg_listbox_clear(ctrl, dlg);
-       dlg_listbox_addwithindex(ctrl, dlg, "Auto", AUTO);
-       dlg_listbox_addwithindex(ctrl, dlg, "Off", FORCE_OFF);
-       dlg_listbox_addwithindex(ctrl, dlg, "On", FORCE_ON);
+       dlg_listbox_addwithid(ctrl, dlg, "Auto", AUTO);
+       dlg_listbox_addwithid(ctrl, dlg, "Off", FORCE_OFF);
+       dlg_listbox_addwithid(ctrl, dlg, "On", FORCE_ON);
        switch (*(int *)ATOFFSET(data, ctrl->listbox.context.i)) {
          case AUTO:      dlg_listbox_select(ctrl, dlg, 0); break;
          case FORCE_OFF: dlg_listbox_select(ctrl, dlg, 1); break;
@@ -305,7 +305,13 @@ static void sessionsaver_handler(union control *ctrl, void *dlg,
                    savedsession[0] = '\0';
                }
            }
-           save_settings(savedsession, !isdef, cfg);
+            {
+                char *errmsg = save_settings(savedsession, !isdef, cfg);
+                if (errmsg) {
+                    dlg_error_msg(dlg, errmsg);
+                    sfree(errmsg);
+                }
+            }
            get_sesslist(ssd->sesslist, FALSE);
            get_sesslist(ssd->sesslist, TRUE);
            dlg_refresh(ssd->editbox, dlg);
@@ -1141,7 +1147,7 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
                                charclass_handler, P(ccd));
     ccd->listbox->listbox.multisel = 1;
     ccd->listbox->listbox.ncols = 4;
-    ccd->listbox->listbox.percentages = smalloc(4*sizeof(int));
+    ccd->listbox->listbox.percentages = snewn(4, int);
     ccd->listbox->listbox.percentages[0] = 15;
     ccd->listbox->listbox.percentages[1] = 25;
     ccd->listbox->listbox.percentages[2] = 20;
@@ -1345,7 +1351,7 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
                                       environ_handler, P(ed));
            ed->listbox->listbox.height = 3;
            ed->listbox->listbox.ncols = 2;
-           ed->listbox->listbox.percentages = smalloc(2*sizeof(int));
+           ed->listbox->listbox.percentages = snewn(2, int);
            ed->listbox->listbox.percentages[0] = 30;
            ed->listbox->listbox.percentages[1] = 70;
        }
@@ -1525,7 +1531,7 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
                                    portfwd_handler, P(pfd));
        pfd->listbox->listbox.height = 3;
        pfd->listbox->listbox.ncols = 2;
-       pfd->listbox->listbox.percentages = smalloc(2*sizeof(int));
+       pfd->listbox->listbox.percentages = snewn(2, int);
        pfd->listbox->listbox.percentages[0] = 20;
        pfd->listbox->listbox.percentages[1] = 80;
        ctrl_tabdelay(s, pfd->rembutton);