diff options
author | Chris Johns <chrisj@rtems.org> | 2023-01-30 13:59:11 +1100 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2023-01-31 07:16:14 +1100 |
commit | 3ad2789fc68308a48119d736c89c93f493d18013 (patch) | |
tree | d826226f97e4a29bb7684fc9d10e072c99303132 /cpukit/libmisc/shell/main_edit.c | |
parent | bsps/nand: Update Xilinx NAND driver (diff) | |
download | rtems-3ad2789fc68308a48119d736c89c93f493d18013.tar.bz2 |
libmisc/shell/edit: Fix closing the editor
Closes #4834
Diffstat (limited to '')
-rw-r--r-- | cpukit/libmisc/shell/main_edit.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/cpukit/libmisc/shell/main_edit.c b/cpukit/libmisc/shell/main_edit.c index 191eefa19d..b9e377bc23 100644 --- a/cpukit/libmisc/shell/main_edit.c +++ b/cpukit/libmisc/shell/main_edit.c @@ -1809,14 +1809,14 @@ static void save_editor(struct editor *ed) { ed->refresh = 1; } -static void close_editor(struct editor *ed) { +static struct editor* close_editor(struct editor *ed) { struct env *env = ed->env; if (ed->dirty) { display_message(ed, "Close %s without saving changes (y/n)? ", ed->filename); if (!ask()) { ed->refresh = 1; - return; + return ed; } } @@ -1828,6 +1828,7 @@ static void close_editor(struct editor *ed) { new_file(ed, ""); } ed->refresh = 1; + return ed; } static void pipe_command(struct editor *ed) { @@ -2151,15 +2152,7 @@ static void edit(struct editor *ed) { case ctrl('s'): save_editor(ed); break; case ctrl('p'): pipe_command(ed); break; #endif -#if defined(__rtems__) - /* - * Coverity spotted this as using ed after free() so changing - * the order of the statements. - */ - case ctrl('w'): ed = ed->env->current; close_editor(ed); break; -#else - case ctrl('w'): close_editor(ed); ed = ed->env->current; break; -#endif + case ctrl('w'): ed = close_editor(ed); break; } } } |