diff --git a/src/syncterm/bbslist.c b/src/syncterm/bbslist.c
index 294a5c1bed6f5e2407870ecb40530848bad760d6..08c54c2852d3c8c5ead5ef3d9a29378f2c9c532e 100644
--- a/src/syncterm/bbslist.c
+++ b/src/syncterm/bbslist.c
@@ -3687,11 +3687,9 @@ show_bbslist(char *current, int connected)
 							if (copied->type != SYSTEM_BBSLIST) {
 								if (!edit_name(copied->name, list, NULL, true))
 									break;
-								listcount++;
-								list[listcount - 1] = copied;
 							}
 							add_bbs(settings.list_path, copied, true);
-							edit_list(list, list[listcount - 1], settings.list_path, false);
+							edit_list(list, copied, settings.list_path, false);
 							load_bbslist(list,
 							             BBSLIST_SIZE,
 							             &defaults,
@@ -3702,8 +3700,10 @@ show_bbslist(char *current, int connected)
 							             &listcount,
 							             &opt,
 							             &bar,
-							             strdup(list[listcount - 1]->name));
+							             strdup(copied->name));
 							oldopt = -1;
+							free(copied);
+							copied = NULL;
 							break;
 					}
 				}