浏览代码

reorder exit code to defer stdio flush until after dtors

this is required in case dtors use stdio.

also remove the old comments; one was cruft from when the code used to
be using function pointers and conditional calls, and has little
motivation now that we're using weak symbols. the other was just
complaining about having to support dtors even though the cost was
made essentially zero in the non-use case by the way it's done here.
Rich Felker 12 年之前
父节点
当前提交
ad5a332c75
共有 1 个文件被更改,包括 1 次插入4 次删除
  1. 1 4
      src/exit/exit.c

+ 1 - 4
src/exit/exit.c

@@ -20,13 +20,10 @@ void exit(int code)
 	/* If more than one thread calls exit, hang until _Exit ends it all */
 	while (a_swap(&lock, 1)) __syscall(SYS_pause);
 
-	/* Only do atexit & stdio flush if they were actually used */
 	__funcs_on_exit();
-	__fflush_on_exit();
-
-	/* Destructor s**t is kept separate from atexit to avoid bloat */
 	if (libc.fini) libc.fini();
 	if (libc.ldso_fini) libc.ldso_fini();
+	__fflush_on_exit();
 
 	_Exit(code);
 	for(;;);