aboutsummaryrefslogtreecommitdiff
path: root/ncurses/base/lib_freeall.c
diff options
context:
space:
mode:
authorRong-En Fan <rafan@FreeBSD.org>2008-11-09 14:08:54 +0000
committerRong-En Fan <rafan@FreeBSD.org>2008-11-09 14:08:54 +0000
commit6181f4622a00a9de81df01cecb5fa73ffdb697bc (patch)
treec963ba08ac935d7f048b78517309fe6fc2f496e6 /ncurses/base/lib_freeall.c
parentc0e48ca1322e978a8f9795a5ddb251df2479f930 (diff)
downloadsrc-6181f4622a00a9de81df01cecb5fa73ffdb697bc.tar.gz
src-6181f4622a00a9de81df01cecb5fa73ffdb697bc.zip
- Import ncurses 5.7-20081102 (5.7 release) onto vendor branchvendor/ncurses/5.7-20081102
Notes
Notes: svn path=/vendor/ncurses/dist/; revision=184798 svn path=/vendor/ncurses/5.7-20081102/; revision=184799; tag=vendor/ncurses/5.7-20081102
Diffstat (limited to 'ncurses/base/lib_freeall.c')
-rw-r--r--ncurses/base/lib_freeall.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/ncurses/base/lib_freeall.c b/ncurses/base/lib_freeall.c
index 4bb7ccc79995..564026582911 100644
--- a/ncurses/base/lib_freeall.c
+++ b/ncurses/base/lib_freeall.c
@@ -40,7 +40,7 @@
extern int malloc_errfd; /* FIXME */
#endif
-MODULE_ID("$Id: lib_freeall.c,v 1.46 2008/05/03 14:13:51 tom Exp $")
+MODULE_ID("$Id: lib_freeall.c,v 1.54 2008/09/27 13:09:57 tom Exp $")
/*
* Free all ncurses data. This is used for testing only (there's no practical
@@ -58,10 +58,13 @@ _nc_freeall(void)
if (SP->_oldnum_list != 0) {
FreeAndNull(SP->_oldnum_list);
}
+ if (SP->_panelHook.destroy != 0) {
+ SP->_panelHook.destroy(SP->_panelHook.stdscr_pseudo_panel);
+ }
}
#endif
if (SP != 0) {
- _nc_lock_global(windowlist);
+ _nc_lock_global(curses);
while (_nc_windows != 0) {
bool deleted = FALSE;
@@ -93,23 +96,18 @@ _nc_freeall(void)
break;
}
delscreen(SP);
- _nc_unlock_global(windowlist);
+ _nc_unlock_global(curses);
}
if (cur_term != 0)
del_curterm(cur_term);
-#if USE_WIDEC_SUPPORT
- FreeIfNeeded(_nc_wacs);
-#endif
(void) _nc_printf_string(0, empty_va);
#ifdef TRACE
(void) _nc_trace_buf(-1, 0);
#endif
-
-#if BROKEN_LINKER || USE_REENTRANT
- FreeIfNeeded(_nc_prescreen.real_acs_map);
+#if USE_WIDEC_SUPPORT
+ FreeIfNeeded(_nc_wacs);
#endif
-
_nc_leaks_tinfo();
#if HAVE_LIBDBMALLOC
@@ -131,7 +129,10 @@ _nc_free_and_exit(int code)
_nc_freeall();
#ifdef TRACE
trace(0); /* close trace file, freeing its setbuf */
- free(_nc_varargs("?", 0));
+ {
+ static va_list fake;
+ free(_nc_varargs("?", fake));
+ }
#endif
fclose(stdout);
FreeIfNeeded(last_setbuf);
@@ -143,4 +144,14 @@ NCURSES_EXPORT(void)
_nc_freeall(void)
{
}
+
+NCURSES_EXPORT(void)
+_nc_free_and_exit(int code)
+{
+ if (SP)
+ delscreen(SP);
+ if (cur_term != 0)
+ del_curterm(cur_term);
+ exit(code);
+}
#endif