From 7791005544836f93542e8277ad5897f8f5920f05 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 31 Aug 2019 10:35:08 -0700 Subject: [PATCH] Check instead of relying on NOTREACHED NOTREACHED was designed for traditional lint decades ago, and _Noreturn now normally subsumes its function. In the one case in Emacs where NORETURN might help and _Noreturn does not, check for NOTREACHED instead of assuming it. * lib-src/etags.c (main): * src/xterm.c (x_connection_closed): Remove NOTREACHED after a call to a _Noreturn function, as NOTREACHED is no longer needed there. Also, one of the NOTREACHEDs was misplaced, which defeated traditional lint checking anyway. * lib-src/pop.c (pop_getline): Redo so as to not need NOTREACHED. * src/emacs.c (main): Use eassume (false) rather than NOTREACHED, so that running with ENABLE_CHECKING catches any internal error causing the toplevel Frecursive_edit to return. --- lib-src/etags.c | 4 ---- lib-src/pop.c | 10 +++++----- src/emacs.c | 3 +-- src/xterm.c | 1 - 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/lib-src/etags.c b/lib-src/etags.c index 036c485d0bb..6409407e466 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -1146,7 +1146,6 @@ main (int argc, char **argv) { error ("-o option may only be given once."); suggest_asking_for_help (); - /* NOTREACHED */ } tagfile = optarg; break; @@ -1208,7 +1207,6 @@ main (int argc, char **argv) case 'w': no_warnings = true; break; default: suggest_asking_for_help (); - /* NOTREACHED */ } /* No more options. Store the rest of arguments. */ @@ -1227,13 +1225,11 @@ main (int argc, char **argv) if (help_asked) print_help (argbuffer); - /* NOTREACHED */ if (nincluded_files == 0 && file_count == 0) { error ("no input files specified."); suggest_asking_for_help (); - /* NOTREACHED */ } if (tagfile == NULL) diff --git a/lib-src/pop.c b/lib-src/pop.c index e4bd6c04965..9a0dd8ca704 100644 --- a/lib-src/pop.c +++ b/lib-src/pop.c @@ -1275,7 +1275,7 @@ pop_getline (popserver server, char **line) server->buffer_index = 0; } - while (1) + while (true) { /* There's a "- 1" here to leave room for the null that we put at the end of the read data below. We put the null there so @@ -1288,7 +1288,7 @@ pop_getline (popserver server, char **line) { strcpy (pop_error, "Out of memory in pop_getline"); pop_trash (server); - return (-1); + break; } } ret = RECV (server->file, server->buffer + server->data, @@ -1298,13 +1298,13 @@ pop_getline (popserver server, char **line) snprintf (pop_error, ERROR_MAX, "%s%s", GETLINE_ERROR, strerror (errno)); pop_trash (server); - return (-1); + break; } else if (ret == 0) { strcpy (pop_error, "Unexpected EOF from server in pop_getline"); pop_trash (server); - return (-1); + break; } else { @@ -1332,7 +1332,7 @@ pop_getline (popserver server, char **line) } } - /* NOTREACHED */ + return -1; } /* diff --git a/src/emacs.c b/src/emacs.c index cc5818393a3..53572d7f0c8 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -2084,8 +2084,7 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem /* Enter editor command loop. This never returns. */ Frecursive_edit (); - /* NOTREACHED */ - return 0; + eassume (false); } /* Sort the args so we can find the most important ones diff --git a/src/xterm.c b/src/xterm.c index 0d224063d76..b761eaf4d11 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -10044,7 +10044,6 @@ For details, see etc/PROBLEMS.\n", { fprintf (stderr, "%s\n", error_msg); Fkill_emacs (make_fixnum (70)); - /* NOTREACHED */ } totally_unblock_input (); -- 2.39.2