libtest: call PR_Cleanup() on exit if NSPR is used

This prevents valgrind from reporting possibly lost memory that NSPR
uses for file descriptor cache and other globally allocated internal
data structures.

Reported-by: Štefan Kremeň
This commit is contained in:
Kamil Dudka 2015-07-14 17:08:44 +02:00
parent 79416fb2d6
commit cd20e81e89
2 changed files with 16 additions and 3 deletions

View File

@ -62,8 +62,8 @@ if USE_EXPLICIT_LIB_DEPS
SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@ SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@ TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
else else
SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_LIBS@ SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_LIBS@ @NSS_LIBS@
TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_AND_TIME_LIBS@ TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_AND_TIME_LIBS@ @NSS_LIBS@
endif endif
# Dependencies (may need to be overriden) # Dependencies (may need to be overriden)

View File

@ -33,6 +33,10 @@
# include <fcntl.h> /* for setmode() */ # include <fcntl.h> /* for setmode() */
#endif #endif
#ifdef USE_NSS
#include <nspr.h>
#endif
#ifdef CURLDEBUG #ifdef CURLDEBUG
# define MEMDEBUG_NODEFINES # define MEMDEBUG_NODEFINES
# include "memdebug.h" # include "memdebug.h"
@ -128,6 +132,7 @@ char *hexdump(unsigned char *buffer, size_t len)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
char *URL; char *URL;
int result;
#ifdef O_BINARY #ifdef O_BINARY
# ifdef __HIGHC__ # ifdef __HIGHC__
@ -166,5 +171,13 @@ int main(int argc, char **argv)
fprintf(stderr, "URL: %s\n", URL); fprintf(stderr, "URL: %s\n", URL);
return test(URL); result = test(URL);
#ifdef USE_NSS
if(PR_Initialized())
/* prevent valgrind from reporting possibly lost memory (fd cache, ...) */
PR_Cleanup();
#endif
return result;
} }