summaryrefslogtreecommitdiffstats
path: root/cpukit/libmisc/shell/main_edit.c
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2023-01-30 13:59:11 +1100
committerChris Johns <chrisj@rtems.org>2023-01-31 07:16:14 +1100
commit3ad2789fc68308a48119d736c89c93f493d18013 (patch)
treed826226f97e4a29bb7684fc9d10e072c99303132 /cpukit/libmisc/shell/main_edit.c
parentbsps/nand: Update Xilinx NAND driver (diff)
downloadrtems-3ad2789fc68308a48119d736c89c93f493d18013.tar.bz2
libmisc/shell/edit: Fix closing the editor
Closes #4834
Diffstat (limited to '')
-rw-r--r--cpukit/libmisc/shell/main_edit.c15
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;
}
}
}