2002-01-29  Ulrich Drepper  <drepper@redhat.com>

	* misc/hsearch_r.c (hsearch_r): Don't insert anything if entry is
	found.
	* misc/Makefile (tests): Add tst-hsearch.
	* misc/tst-hsearch.c: New file.
This commit is contained in:
Ulrich Drepper 2002-01-29 08:25:15 +00:00
parent fa8d436c87
commit 92f120d446
4 changed files with 41 additions and 9 deletions

View File

@ -1,3 +1,10 @@
2002-01-29 Ulrich Drepper <drepper@redhat.com>
* misc/hsearch_r.c (hsearch_r): Don't insert anything if entry is
found.
* misc/Makefile (tests): Add tst-hsearch.
* misc/tst-hsearch.c: New file.
2002-01-18 Wolfram Gloger <wg@malloc.de> 2002-01-18 Wolfram Gloger <wg@malloc.de>
* malloc/malloc.c: Rewrite, adapted from Doug Lea's malloc-2.7.0.c. * malloc/malloc.c: Rewrite, adapted from Doug Lea's malloc-2.7.0.c.

View File

@ -1,4 +1,4 @@
# Copyright (C) 1991-1999,2000,01 Free Software Foundation, Inc. # Copyright (C) 1991-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
# This file is part of the GNU C Library. # This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or # The GNU C Library is free software; you can redistribute it and/or
@ -70,7 +70,7 @@ install-lib := libbsd-compat.a libg.a
endif endif
gpl2lgpl := error.c error.h gpl2lgpl := error.c error.h
tests := tst-dirname tst-tsearch tst-fdset tst-efgcvt tst-mntent tests := tst-dirname tst-tsearch tst-fdset tst-efgcvt tst-mntent tst-hsearch
CFLAGS-tsearch.c = $(exceptions) CFLAGS-tsearch.c = $(exceptions)
CFLAGS-lsearch.c = $(exceptions) CFLAGS-lsearch.c = $(exceptions)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc. /* Copyright (C) 1993, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1993. Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1993.
@ -168,9 +168,6 @@ hsearch_r (item, action, retval, htab)
if (htab->table[idx].used == hval if (htab->table[idx].used == hval
&& strcmp (item.key, htab->table[idx].entry.key) == 0) && strcmp (item.key, htab->table[idx].entry.key) == 0)
{ {
if (action == ENTER)
htab->table[idx].entry.data = item.data;
*retval = &htab->table[idx].entry; *retval = &htab->table[idx].entry;
return 1; return 1;
} }
@ -195,9 +192,6 @@ hsearch_r (item, action, retval, htab)
if (htab->table[idx].used == hval if (htab->table[idx].used == hval
&& strcmp (item.key, htab->table[idx].entry.key) == 0) && strcmp (item.key, htab->table[idx].entry.key) == 0)
{ {
if (action == ENTER)
htab->table[idx].entry.data = item.data;
*retval = &htab->table[idx].entry; *retval = &htab->table[idx].entry;
return 1; return 1;
} }

31
misc/tst-hsearch.c Normal file
View File

@ -0,0 +1,31 @@
#include <search.h>
#include <stdio.h>
int
main (void)
{
int a = 1;
int b = 2;
ENTRY i;
ENTRY *e;
if (hcreate (20) == 0)
{
puts ("hcreate failed");
return 1;
}
i.key = (char *) "one";
i.data = &a;
if (hsearch (i, ENTER) == NULL)
return 1;
i.key = (char *) "one";
i.data = &b;
e = hsearch (i, ENTER);
printf ("e.data = %d\n", *(int *) e->data);
if (*(int *) e->data != 1)
return 1;
return 0;
}