diff options
author | Jakob Kaivo <jkk@ung.org> | 2019-02-27 19:52:24 -0500 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2019-02-27 19:52:24 -0500 |
commit | 8261f21ea9676bccccf9d03dd0ad72d841bd1ec3 (patch) | |
tree | f5fc50a4947cc714dcdfdbe32a3074025f2f1db5 /src/stdlib/exit.c | |
parent | 98f4736e705952cffdc58736a0b3f0fa74bbdbb4 (diff) |
make final call in infinite loop so _Noreturn holds true
Diffstat (limited to 'src/stdlib/exit.c')
-rw-r--r-- | src/stdlib/exit.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/stdlib/exit.c b/src/stdlib/exit.c index 8207fd81..f7ce5325 100644 --- a/src/stdlib/exit.c +++ b/src/stdlib/exit.c @@ -7,6 +7,7 @@ /** cause normal program termination **/ _Noreturn void exit(int status) { + long scno = ((syscall_lookup_t)__libc(SYSCALL_LOOKUP))("exit"); struct atexit *ae = __libc(ATEXIT); /* execute all atexit() registered functions in reverse order */ @@ -26,8 +27,9 @@ _Noreturn void exit(int status) */ (void)status; - __syscall(((long (*)(char*))__libc(SYSCALL_LOOKUP))("exit"), status); - for (;;); /* quiet _Noreturn functions returns warning */ + for (;;) { + __syscall(scno, status); + } } /*** |