mirror of git://git.sv.gnu.org/nano.git
startup: don't call delwin() with NULL, to avoid crashing on Solaris
Apparently the curses on SunOS is less forgiving than the one on GNU. Or rather: delwin(NULL) should just return an error, it shouldn't crash. This fixes https://savannah.gnu.org/bugs/?51053. Reported-by: John Wiersba <jrw32982@yahoo.com> Solved-by: John Wiersba <jrw32982@yahoo.com>
This commit is contained in:
parent
e4775c2060
commit
9ce41543ed
|
@ -95,14 +95,14 @@ char *present_path = NULL;
|
||||||
|
|
||||||
unsigned flags[4] = {0, 0, 0, 0};
|
unsigned flags[4] = {0, 0, 0, 0};
|
||||||
/* Our flag containing the states of all global options. */
|
/* Our flag containing the states of all global options. */
|
||||||
WINDOW *topwin;
|
WINDOW *topwin = NULL;
|
||||||
/* The top portion of the window, where we display the version
|
/* The top portion of the window, where we display the version
|
||||||
* number of nano, the name of the current file, and whether the
|
* number of nano, the name of the current file, and whether the
|
||||||
* current file has been modified. */
|
* current file has been modified. */
|
||||||
WINDOW *edit;
|
WINDOW *edit = NULL;
|
||||||
/* The middle portion of the window, i.e. the edit window, where
|
/* The middle portion of the window, i.e. the edit window, where
|
||||||
* we display the current file we're editing. */
|
* we display the current file we're editing. */
|
||||||
WINDOW *bottomwin;
|
WINDOW *bottomwin = NULL;
|
||||||
/* The bottom portion of the window, where we display statusbar
|
/* The bottom portion of the window, where we display statusbar
|
||||||
* messages, the statusbar prompt, and a list of shortcuts. */
|
* messages, the statusbar prompt, and a list of shortcuts. */
|
||||||
int editwinrows = 0;
|
int editwinrows = 0;
|
||||||
|
@ -1728,7 +1728,8 @@ int strtomenu(const char *input)
|
||||||
* function unless debugging is turned on. */
|
* function unless debugging is turned on. */
|
||||||
void thanks_for_all_the_fish(void)
|
void thanks_for_all_the_fish(void)
|
||||||
{
|
{
|
||||||
delwin(topwin);
|
if (topwin != NULL)
|
||||||
|
delwin(topwin);
|
||||||
delwin(edit);
|
delwin(edit);
|
||||||
delwin(bottomwin);
|
delwin(bottomwin);
|
||||||
|
|
||||||
|
|
13
src/nano.c
13
src/nano.c
|
@ -677,14 +677,17 @@ void die_save_file(const char *die_filename, struct stat *die_stat)
|
||||||
/* Initialize the three window portions nano uses. */
|
/* Initialize the three window portions nano uses. */
|
||||||
void window_init(void)
|
void window_init(void)
|
||||||
{
|
{
|
||||||
/* First delete existing windows, in case of resizing. */
|
/* When resizing, first delete the existing windows. */
|
||||||
delwin(topwin);
|
if (edit != NULL) {
|
||||||
topwin = NULL;
|
if (topwin != NULL)
|
||||||
delwin(edit);
|
delwin(topwin);
|
||||||
delwin(bottomwin);
|
delwin(edit);
|
||||||
|
delwin(bottomwin);
|
||||||
|
}
|
||||||
|
|
||||||
/* If the terminal is very flat, don't set up a titlebar. */
|
/* If the terminal is very flat, don't set up a titlebar. */
|
||||||
if (LINES < 3) {
|
if (LINES < 3) {
|
||||||
|
topwin = NULL;
|
||||||
editwinrows = 1;
|
editwinrows = 1;
|
||||||
/* Set up two subwindows. If the terminal is just one line,
|
/* Set up two subwindows. If the terminal is just one line,
|
||||||
* edit window and statusbar window will cover each other. */
|
* edit window and statusbar window will cover each other. */
|
||||||
|
|
Loading…
Reference in New Issue