Update.
2004-07-21 Jakub Jelinek <jakub@redhat.com> * resolv/res_libc.c (res_init): If RES_INIT is set and _res.nscount > 0, call __res_nclose and free nsaddrs. * resolv/Makefile: Add rules to build and run tst-leaks2. * resolv/tst-leaks2.c: New test.
This commit is contained in:
parent
84b5ba7ecf
commit
2ed2dc1846
@ -1,3 +1,10 @@
|
||||
2004-07-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* resolv/res_libc.c (res_init): If RES_INIT is set and
|
||||
_res.nscount > 0, call __res_nclose and free nsaddrs.
|
||||
* resolv/Makefile: Add rules to build and run tst-leaks2.
|
||||
* resolv/tst-leaks2.c: New test.
|
||||
|
||||
2004-07-21 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* intl/libintl.h: Don't define macros for C++.
|
||||
|
@ -33,8 +33,9 @@ routines := herror inet_addr inet_ntop inet_pton nsap_addr res_init \
|
||||
res_hconf res_libc res-state
|
||||
|
||||
tests = tst-aton tst-leaks
|
||||
xtests = tst-leaks2
|
||||
|
||||
generate := mtrace-tst-leaks tst-leaks.mtrace
|
||||
generate := mtrace-tst-leaks tst-leaks.mtrace tst-leaks2.mtrace
|
||||
|
||||
include ../Makeconfig
|
||||
|
||||
@ -65,7 +66,8 @@ ifeq (yesyes,$(build-shared)$(have-thread-library))
|
||||
tests: $(objpfx)ga_test
|
||||
endif
|
||||
|
||||
generated := mtrace-tst-leaks tst-leaks.mtrace
|
||||
generated := mtrace-tst-leaks tst-leaks.mtrace \
|
||||
mtrace-tst-leaks2 tst-leaks2.mtrace
|
||||
|
||||
include ../Rules
|
||||
|
||||
@ -104,3 +106,12 @@ ifneq (no,$(PERL))
|
||||
tests: $(objpfx)mtrace-tst-leaks
|
||||
endif
|
||||
endif
|
||||
|
||||
tst-leaks2-ENV = MALLOC_TRACE=$(objpfx)tst-leaks2.mtrace
|
||||
$(objpfx)mtrace-tst-leaks2: $(objpfx)tst-leaks2.out
|
||||
$(common-objpfx)malloc/mtrace $(objpfx)tst-leaks2.mtrace > $@
|
||||
ifeq (no,$(cross-compiling))
|
||||
ifneq (no,$(PERL))
|
||||
xtests: $(objpfx)mtrace-tst-leaks2
|
||||
endif
|
||||
endif
|
||||
|
@ -54,6 +54,14 @@ res_init(void) {
|
||||
_res.retry = 4;
|
||||
if (!(_res.options & RES_INIT))
|
||||
_res.options = RES_DEFAULT;
|
||||
else if (_res.nscount > 0) {
|
||||
__res_nclose (&_res); /* Close any VC sockets. */
|
||||
|
||||
for (int ns = 0; ns < MAXNS; ns++) {
|
||||
free (_res._u._ext.nsaddrs[ns]);
|
||||
_res._u._ext.nsaddrs[ns] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This one used to initialize implicitly to zero, so unless the app
|
||||
|
41
resolv/tst-leaks2.c
Normal file
41
resolv/tst-leaks2.c
Normal file
@ -0,0 +1,41 @@
|
||||
/* Tests for res_init in libresolv
|
||||
Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#undef gethostbyname
|
||||
|
||||
#include <mcheck.h>
|
||||
#include <netdb.h>
|
||||
#include <resolv.h>
|
||||
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
mtrace ();
|
||||
for (int i = 0; i < 20; ++i)
|
||||
{
|
||||
res_init ();
|
||||
gethostbyname ("www.gnu.org");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define TEST_FUNCTION do_test ()
|
||||
#define TIMEOUT 30
|
||||
/* This defines the `main' function and some more. */
|
||||
#include <test-skeleton.c>
|
Loading…
x
Reference in New Issue
Block a user