X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/5b01163dec51496cc4c50648d6674d67f0092a33..cf57870921b26703aad420c6741c524b33736ff1:/sbr/error.c diff --git a/sbr/error.c b/sbr/error.c index d6d96851..b33eae54 100644 --- a/sbr/error.c +++ b/sbr/error.c @@ -29,9 +29,9 @@ advise (const char *what, const char *fmt, ...) /* adios calls advertise() with no tail to print fmt, and perhaps what, * to stderr, and "ends" the program with an error exit status. The * route to exit is via the done function pointer and may not be - * straightforward. - * FIXME: Document if this function can ever return. If not, perhaps an - * abort(3) at the end of the routine would make that more clear. */ + * straightforward, e.g. longjmp(3), but it must not return to adios(). + * If it does then it's a bug and adios() will abort(3) as callers do + * not expect execution to continue. */ void adios (const char *what, const char *fmt, ...) { @@ -41,6 +41,7 @@ adios (const char *what, const char *fmt, ...) advertise (what, NULL, fmt, ap); va_end(ap); done (1); + abort(); } @@ -69,7 +70,7 @@ void advertise (const char *what, char *tail, const char *fmt, va_list ap) { int eindex = errno; - char buffer[BUFSIZ], errbuf[BUFSIZ], *err; + char buffer[NMH_BUFSIZ], errbuf[NMH_BUFSIZ], *err; struct iovec iob[10], *iov; size_t niov;