include/closestream: add close_stdout_atexit()
It seems better to have a way to control when atexit(close_stdout()) is used, because close stdout means that for example ASAN (or another into binary integrated tool) is not able to print the final summary. Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
7f8787d094
commit
31c66833cb
|
@ -156,6 +156,8 @@ AC_ARG_ENABLE([asan],
|
||||||
AS_IF([test "x$enable_asan" = xyes], [
|
AS_IF([test "x$enable_asan" = xyes], [
|
||||||
UL_WARN_ADD([-fsanitize=address])
|
UL_WARN_ADD([-fsanitize=address])
|
||||||
ASAN_LDFLAGS="-fsanitize=address"
|
ASAN_LDFLAGS="-fsanitize=address"
|
||||||
|
],[
|
||||||
|
AC_DEFINE([USE_CLOSE_ATEXIT], [1], [close stdout at exit])
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_SUBST([ASAN_LDFLAGS])
|
AC_SUBST([ASAN_LDFLAGS])
|
||||||
|
|
|
@ -51,6 +51,17 @@ close_stdout(void)
|
||||||
_exit(CLOSE_EXIT_CODE);
|
_exit(CLOSE_EXIT_CODE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
close_stdout_atexit(void)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Note that close stdout at exit disables ASAN to report memory leaks
|
||||||
|
*/
|
||||||
|
#ifdef USE_CLOSE_ATEXIT
|
||||||
|
atexit(close_stdout);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef HAVE_FSYNC
|
#ifndef HAVE_FSYNC
|
||||||
static inline int
|
static inline int
|
||||||
fsync(int fd __attribute__((__unused__)))
|
fsync(int fd __attribute__((__unused__)))
|
||||||
|
|
Loading…
Reference in New Issue