diff options
Diffstat (limited to 'contrib/ncurses/ncurses/base/lib_redrawln.c')
-rw-r--r-- | contrib/ncurses/ncurses/base/lib_redrawln.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/contrib/ncurses/ncurses/base/lib_redrawln.c b/contrib/ncurses/ncurses/base/lib_redrawln.c index dd0a51e6ae5a..91a03711de7c 100644 --- a/contrib/ncurses/ncurses/base/lib_redrawln.c +++ b/contrib/ncurses/ncurses/base/lib_redrawln.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998,2000 Free Software Foundation, Inc. * + * Copyright (c) 1998,2000,2001 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 * @@ -39,14 +39,14 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_redrawln.c,v 1.9 2000/12/10 02:43:27 tom Exp $") +MODULE_ID("$Id: lib_redrawln.c,v 1.10 2001/09/29 17:41:31 tom Exp $") NCURSES_EXPORT(int) wredrawln(WINDOW *win, int beg, int num) { int i; int end; - size_t len = (win->_maxx + 1) * sizeof(chtype); + size_t len = (win->_maxx + 1); T((T_CALLED("wredrawln(%p,%d,%d)"), win, beg, num)); @@ -57,9 +57,15 @@ wredrawln(WINDOW *win, int beg, int num) returnCode(ERR); end = beg + num; + if (end > curscr->_maxy + 1) + end = curscr->_maxy + 1; if (end > win->_maxy + 1) end = win->_maxy + 1; + if (len > (size_t) (curscr->_maxx + 1)) + len = (size_t) (curscr->_maxx + 1); + len *= sizeof(curscr->_line[0].text[0]); + for (i = beg; i < end; i++) { memset(curscr->_line[i + win->_begy].text + win->_begx, 0, len); _nc_make_oldhash(i + win->_begy); |