leak-detective: call tzset() explicitly before enabling leak detective
tzset() is hard to whitelist on some systems, as there is no symbol involved. Call tzset() explicitly before initialization to avoid false positives.
This commit is contained in:
1 parent
17211b6b9a
commit
7e3f6299d5
1 file changed
+11
-6
@@ -27,6 +27,7 @@
|
||||
#include <netdb.h>
|
||||
#include <locale.h>
|
||||
#include <dlfcn.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "leak_detective.h"
|
||||
|
||||
@@ -283,12 +284,6 @@ char *whitelist[] = {
|
||||
"pthread_setspecific",
|
||||
"__pthread_setspecific",
|
||||
/* glibc functions */
|
||||
"mktime",
|
||||
"ctime",
|
||||
"__gmtime_r",
|
||||
"localtime_r",
|
||||
"tzset",
|
||||
"time_printf_hook",
|
||||
"inet_ntoa",
|
||||
"strerror",
|
||||
"getprotobyname",
|
||||
@@ -366,6 +361,14 @@ char *whitelist[] = {
|
||||
"gnutls_global_init",
|
||||
};
|
||||
|
||||
/**
|
||||
* Some functions are hard to whitelist, as they don't use a symbol directly.
|
||||
* Use some static initialization to suppress them on leak reports
|
||||
*/
|
||||
static void init_static_allocations()
|
||||
{
|
||||
tzset();
|
||||
}
|
||||
|
||||
/**
|
||||
* Hashtable hash function
|
||||
@@ -748,6 +751,8 @@ leak_detective_t *leak_detective_create()
|
||||
lock = spinlock_create();
|
||||
thread_disabled = thread_value_create(NULL);
|
||||
|
||||
init_static_allocations();
|
||||
|
||||
if (getenv("LEAK_DETECTIVE_DISABLE") == NULL)
|
||||
{
|
||||
enable_leak_detective();
|
||||
|
||||
Reference in new issue
Block a user