projects
/
ncurses.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ncurses 6.1 - patch 20190323
[ncurses.git]
/
ncurses
/
base
/
lib_newwin.c
diff --git
a/ncurses/base/lib_newwin.c
b/ncurses/base/lib_newwin.c
index 791d808244bd1ec37cbd321fdd53e4dab61caec1..5d48107a3003d9fee2917c8bf3af9de50984adda 100644
(file)
--- a/
ncurses/base/lib_newwin.c
+++ b/
ncurses/base/lib_newwin.c
@@
-1,5
+1,5
@@
/****************************************************************************
/****************************************************************************
- * Copyright (c) 1998-20
09,2010
Free Software Foundation, Inc. *
+ * Copyright (c) 1998-20
16,2017
Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@
-43,7
+43,7
@@
#include <curses.priv.h>
#include <stddef.h>
#include <curses.priv.h>
#include <stddef.h>
-MODULE_ID("$Id: lib_newwin.c,v 1.
66 2010/04/24 23:31:18
tom Exp $")
+MODULE_ID("$Id: lib_newwin.c,v 1.
74 2017/05/13 23:17:29
tom Exp $")
#define window_is(name) ((sp)->_##name == win)
#define window_is(name) ((sp)->_##name == win)
@@
-91,8
+91,6
@@
remove_window_from_screen(WINDOW *win)
NCURSES_EXPORT(int)
_nc_freewin(WINDOW *win)
{
NCURSES_EXPORT(int)
_nc_freewin(WINDOW *win)
{
- WINDOWLIST *p, *q;
- int i;
int result = ERR;
#ifdef USE_SP_WINDOWLIST
SCREEN *sp = _nc_screen_of(win); /* pretend this is parameter */
int result = ERR;
#ifdef USE_SP_WINDOWLIST
SCREEN *sp = _nc_screen_of(win); /* pretend this is parameter */
@@
-101,17
+99,23
@@
_nc_freewin(WINDOW *win)
T((T_CALLED("_nc_freewin(%p)"), (void *) win));
if (win != 0) {
T((T_CALLED("_nc_freewin(%p)"), (void *) win));
if (win != 0) {
+
if (_nc_nonsp_try_global(curses) == 0) {
if (_nc_nonsp_try_global(curses) == 0) {
+ WINDOWLIST *p, *q;
+
q = 0;
q = 0;
- for (each_window(SP_PARM, p)) {
+ for (each_window(sp, p)) {
+
if (&(p->win) == win) {
remove_window_from_screen(win);
if (q == 0)
if (&(p->win) == win) {
remove_window_from_screen(win);
if (q == 0)
- WindowList(
SP_PARM
) = p->next;
+ WindowList(
sp
) = p->next;
else
q->next = p->next;
if (!(win->_flags & _SUBWIN)) {
else
q->next = p->next;
if (!(win->_flags & _SUBWIN)) {
+ int i;
+
for (i = 0; i <= win->_maxy; i++)
FreeIfNeeded(win->_line[i].text);
}
for (i = 0; i <= win->_maxy; i++)
FreeIfNeeded(win->_line[i].text);
}
@@
-141,7
+145,11
@@
NCURSES_SP_NAME(newwin) (NCURSES_SP_DCLx
T((T_CALLED("newwin(%p, %d,%d,%d,%d)"), (void *) SP_PARM, num_lines, num_columns,
begy, begx));
T((T_CALLED("newwin(%p, %d,%d,%d,%d)"), (void *) SP_PARM, num_lines, num_columns,
begy, begx));
- if (begy < 0 || begx < 0 || num_lines < 0 || num_columns < 0)
+ if (begy < 0
+ || begx < 0
+ || num_lines < 0
+ || num_columns < 0
+ || SP_PARM == 0)
returnWin(0);
if (num_lines == 0)
returnWin(0);
if (num_lines == 0)
@@
-235,10
+243,15
@@
derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx)
NCURSES_EXPORT(WINDOW *)
subwin(WINDOW *w, int l, int c, int y, int x)
{
NCURSES_EXPORT(WINDOW *)
subwin(WINDOW *w, int l, int c, int y, int x)
{
+ WINDOW *result = 0;
+
T((T_CALLED("subwin(%p, %d, %d, %d, %d)"), (void *) w, l, c, y, x));
T((T_CALLED("subwin(%p, %d, %d, %d, %d)"), (void *) w, l, c, y, x));
- T(("parent has begy = %ld, begx = %ld", (long) w->_begy, (long) w->_begx));
+ if (w != 0) {
+ T(("parent has begy = %ld, begx = %ld", (long) w->_begy, (long) w->_begx));
- returnWin(derwin(w, l, c, y - w->_begy, x - w->_begx));
+ result = derwin(w, l, c, y - w->_begy, x - w->_begx);
+ }
+ returnWin(result);
}
static bool
}
static bool
@@
-375,18
+388,18
@@
NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_DCLx
NCURSES_EXPORT(WINDOW *)
_nc_curscr_of(SCREEN *sp)
{
NCURSES_EXPORT(WINDOW *)
_nc_curscr_of(SCREEN *sp)
{
- return
sp == 0 ? 0
: CurScreen(sp);
+ return
(sp == 0) ? NULL
: CurScreen(sp);
}
NCURSES_EXPORT(WINDOW *)
_nc_newscr_of(SCREEN *sp)
{
}
NCURSES_EXPORT(WINDOW *)
_nc_newscr_of(SCREEN *sp)
{
- return
sp == 0 ? 0
: NewScreen(sp);
+ return
(sp == 0) ? NULL
: NewScreen(sp);
}
NCURSES_EXPORT(WINDOW *)
_nc_stdscr_of(SCREEN *sp)
{
}
NCURSES_EXPORT(WINDOW *)
_nc_stdscr_of(SCREEN *sp)
{
- return
sp == 0 ? 0
: StdScreen(sp);
+ return
(sp == 0) ? NULL
: StdScreen(sp);
}
#endif
}
#endif