diff --git a/ChangeLog b/ChangeLog index 6312858d..73252f70 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,12 @@ CVS code - Translation updates (see po/ChangeLog for details). - Fix globals and externs such that nano will compile with DISABLE_SPELLER (David Benbennick). + - Fix unreasonable fill values by wrapping at length 0 instead + of erroring out, and don't start up if the window size is too + small but fill is set reasonably. Changes to + nano.c:global_init(), window_init(), and handle_sigwinch(). + New macro MIN_EDITOR_COLS replaces MIN_FILL_LENGTH + (David Benbennick). - files.c: cwd_tab_completion() - Memory leak fix (David Benbennick). diff --git a/nano.c b/nano.c index 07217646..591d2887 100644 --- a/nano.c +++ b/nano.c @@ -199,7 +199,8 @@ void global_init(int save_cutbuffer) current_x = 0; current_y = 0; - if ((editwinrows = LINES - 5 + no_help()) < MIN_EDITOR_ROWS) + editwinrows = LINES - 5 + no_help(); + if (editwinrows < MIN_EDITOR_ROWS || COLS < MIN_EDITOR_COLS) die_too_small(); fileage = NULL; @@ -216,8 +217,8 @@ void global_init(int save_cutbuffer) fill = wrap_at; if (fill <= 0) fill += COLS; - if (fill < MIN_FILL_LENGTH) - die_too_small(); + if (fill < 0) + fill = 0; #endif hblank = charalloc(COLS + 1); @@ -227,7 +228,8 @@ void global_init(int save_cutbuffer) void window_init(void) { - if ((editwinrows = LINES - 5 + no_help()) < MIN_EDITOR_ROWS) + editwinrows = LINES - 5 + no_help(); + if (editwinrows < MIN_EDITOR_ROWS) die_too_small(); if (edit != NULL) @@ -2867,15 +2869,16 @@ void handle_sigwinch(int s) * But not in all cases, argh. */ COLS = win.ws_col; LINES = win.ws_row; - if ((editwinrows = LINES - 5 + no_help()) < MIN_EDITOR_ROWS) + editwinrows = LINES - 5 + no_help(); + if (editwinrows < MIN_EDITOR_ROWS || COLS < MIN_EDITOR_COLS) die_too_small(); #ifndef DISABLE_WRAPJUSTIFY fill = wrap_at; if (fill <= 0) fill += COLS; - if (fill < MIN_FILL_LENGTH) - die_too_small(); + if (fill < 0) + fill = 0; #endif hblank = nrealloc(hblank, COLS + 1); diff --git a/nano.h b/nano.h index de0fe7c3..40a3ff80 100644 --- a/nano.h +++ b/nano.h @@ -417,14 +417,13 @@ typedef enum { /* Minimum editor window rows required for nano to work correctly */ #define MIN_EDITOR_ROWS 3 +/* Minimum editor window cols required for nano to work correctly */ +#define MIN_EDITOR_COLS 10 + /* Default number of characters from end-of-line where text wrapping occurs */ #define CHARS_FROM_EOL 8 -/* Minimum fill length (space available for text before wrapping - occurs) */ -#define MIN_FILL_LENGTH 10 - /* Maximum number of search history strings saved, same value used for replace history */ #define MAX_SEARCH_HISTORY 100