summaryrefslogtreecommitdiffstats
path: root/gnu/lib/libdialog
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1996-04-18 13:36:39 +0000
committerjkh <jkh@FreeBSD.org>1996-04-18 13:36:39 +0000
commita4dd56c7c9a824330a7b972935b5b50473fc8844 (patch)
treefdc205cd9d03b99cfdb8c92549cb3ca7bb1a4a87 /gnu/lib/libdialog
parentadeba4991fea2fc6babd0748918268bdf7fe4cbf (diff)
downloadFreeBSD-src-a4dd56c7c9a824330a7b972935b5b50473fc8844.zip
FreeBSD-src-a4dd56c7c9a824330a7b972935b5b50473fc8844.tar.gz
Remove a long-standing window leak I just noticed.
Diffstat (limited to 'gnu/lib/libdialog')
-rw-r--r--gnu/lib/libdialog/checklist.c8
-rw-r--r--gnu/lib/libdialog/menubox.c6
-rw-r--r--gnu/lib/libdialog/radiolist.c6
3 files changed, 18 insertions, 2 deletions
diff --git a/gnu/lib/libdialog/checklist.c b/gnu/lib/libdialog/checklist.c
index 8e8bdbc..9a510f8 100644
--- a/gnu/lib/libdialog/checklist.c
+++ b/gnu/lib/libdialog/checklist.c
@@ -206,7 +206,6 @@ draw:
save = dupwin(newscr);
st = ditems[OK_BUTTON].fire(&ditems[OK_BUTTON]);
- delwin(dialog);
if (st & DITEM_RESTORE) {
touchwin(save);
wrefresh(save);
@@ -214,7 +213,6 @@ draw:
delwin(save);
}
else {
- delwin(dialog);
*result = '\0';
for (i = 0; i < item_no; i++) {
if (status[i]) {
@@ -223,6 +221,8 @@ draw:
}
}
}
+ delwin(list);
+ delwin(dialog);
return 0;
}
/* Shortcut to cancel? */
@@ -239,6 +239,7 @@ draw:
}
delwin(save);
}
+ delwin(list);
delwin(dialog);
return 1;
}
@@ -329,6 +330,7 @@ draw:
}
else if (st & DITEM_RECREATE) {
delwin(save);
+ delwin(list);
delwin(dialog);
goto draw;
}
@@ -468,6 +470,7 @@ draw:
}
}
}
+ delwin(list);
delwin(dialog);
return button;
break;
@@ -493,6 +496,7 @@ draw:
redraw_menu = FALSE;
}
}
+ delwin(list);
delwin(dialog);
return -1; /* ESC pressed */
}
diff --git a/gnu/lib/libdialog/menubox.c b/gnu/lib/libdialog/menubox.c
index 4823c2c..ca963bf 100644
--- a/gnu/lib/libdialog/menubox.c
+++ b/gnu/lib/libdialog/menubox.c
@@ -143,6 +143,7 @@ draw:
/* create new window for the menu */
menu = subwin(dialog, menu_height, menu_width, y + box_y + 1, x + box_x + 1);
if (menu == NULL) {
+ delwin(dialog);
endwin();
fprintf(stderr, "\nsubwin(dialog,%d,%d,%d,%d) failed, maybe wrong dims\n", menu_height,menu_width,y+box_y+1,x+box_x+1);
return -1;
@@ -202,6 +203,7 @@ draw:
}
else
strcpy(result, items[(scroll + choice) * 2]);
+ delwin(menu);
delwin(dialog);
return 0;
}
@@ -219,6 +221,7 @@ draw:
}
delwin(save);
}
+ delwin(menu);
delwin(dialog);
return 1;
}
@@ -385,6 +388,7 @@ draw:
wrefresh(save);
}
else if (status & DITEM_RECREATE) {
+ delwin(menu);
delwin(dialog);
delwin(save);
goto draw;
@@ -396,6 +400,7 @@ draw:
else if (result)
strcpy(result, items[(scroll+choice)*2]);
}
+ delwin(menu);
delwin(dialog);
return button;
@@ -420,6 +425,7 @@ draw:
}
}
+ delwin(menu);
delwin(dialog);
return -1; /* ESC pressed */
}
diff --git a/gnu/lib/libdialog/radiolist.c b/gnu/lib/libdialog/radiolist.c
index e56d8e7..63c9350 100644
--- a/gnu/lib/libdialog/radiolist.c
+++ b/gnu/lib/libdialog/radiolist.c
@@ -230,6 +230,7 @@ draw:
}
}
}
+ delwin(list);
delwin(dialog);
return 0;
}
@@ -247,6 +248,7 @@ draw:
}
delwin(save);
}
+ delwin(list);
delwin(dialog);
return 1;
}
@@ -335,6 +337,7 @@ draw:
}
else if (st & DITEM_RECREATE) {
delwin(save);
+ delwin(list);
delwin(dialog);
goto draw;
}
@@ -460,6 +463,7 @@ draw:
}
else if (st & DITEM_RECREATE) {
delwin(save);
+ delwin(list);
delwin(dialog);
goto draw;
}
@@ -475,6 +479,7 @@ draw:
}
}
}
+ delwin(list);
delwin(dialog);
return button;
break;
@@ -499,6 +504,7 @@ draw:
}
}
+ delwin(list);
delwin(dialog);
free(status);
return -1; /* ESC pressed */
OpenPOWER on IntegriCloud