mirror of git://sourceware.org/git/glibc.git
[BZ #10100]
2009-04-24 Ulrich Drepper <drepper@redhat.com> [BZ #10100] * misc/hsearch_r.c (hsearch_r): Add back ensurance that hval is not zero.
This commit is contained in:
parent
f397be127c
commit
c2d5bd5b00
|
@ -1,3 +1,9 @@
|
||||||
|
2009-04-24 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
[BZ #10100]
|
||||||
|
* misc/hsearch_r.c (hsearch_r): Add back ensurance that hval is
|
||||||
|
not zero.
|
||||||
|
|
||||||
2009-04-24 Jakub Jelinek <jakub@redhat.com>
|
2009-04-24 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* iconvdata/sjis.c (BODY): Don't advance inptr before
|
* iconvdata/sjis.c (BODY): Don't advance inptr before
|
||||||
|
|
|
@ -131,14 +131,12 @@ create_archive (const char *archivefname, struct locarhandle *ah)
|
||||||
|
|
||||||
/* To prepare for enlargements of the mmaped area reserve some
|
/* To prepare for enlargements of the mmaped area reserve some
|
||||||
address space. */
|
address space. */
|
||||||
size_t reserved;
|
size_t reserved = RESERVE_MMAP_SIZE;
|
||||||
int xflags = 0;
|
int xflags = 0;
|
||||||
p = mmap64 (NULL, RESERVE_MMAP_SIZE, PROT_NONE, MAP_ANON, -1, 0);
|
if (total < RESERVE_MMAP_SIZE
|
||||||
if (p != MAP_FAILED)
|
&& ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_ANON, -1, 0))
|
||||||
{
|
!= MAP_FAILED))
|
||||||
xflags = MAP_FIXED;
|
xflags = MAP_FIXED;
|
||||||
reserved = RESERVE_MMAP_SIZE;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
p = NULL;
|
p = NULL;
|
||||||
|
@ -580,14 +578,13 @@ open_archive (struct locarhandle *ah, bool readonly)
|
||||||
|
|
||||||
/* To prepare for enlargements of the mmaped area reserve some
|
/* To prepare for enlargements of the mmaped area reserve some
|
||||||
address space. */
|
address space. */
|
||||||
size_t reserved;
|
size_t reserved = RESERVE_MMAP_SIZE;
|
||||||
int xflags = 0;
|
int xflags = 0;
|
||||||
void *p = mmap64 (NULL, RESERVE_MMAP_SIZE, PROT_NONE, MAP_ANON, -1, 0);
|
void *p;
|
||||||
if (p != MAP_FAILED)
|
if (st.st_size < RESERVE_MMAP_SIZE
|
||||||
{
|
&& ((p = mmap64 (NULL, RESERVE_MMAP_SIZE, PROT_NONE, MAP_ANON, -1, 0))
|
||||||
xflags = MAP_FIXED;
|
!= MAP_FAILED))
|
||||||
reserved = RESERVE_MMAP_SIZE;
|
xflags = MAP_FIXED;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
p = NULL;
|
p = NULL;
|
||||||
|
@ -612,7 +609,7 @@ close_archive (struct locarhandle *ah)
|
||||||
{
|
{
|
||||||
if (ah->fd != -1)
|
if (ah->fd != -1)
|
||||||
{
|
{
|
||||||
munmap (ah->addr, ah->mmaped);
|
munmap (ah->addr, MAX (ah->reserved, ah->mmaped));
|
||||||
close (ah->fd);
|
close (ah->fd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -157,6 +157,8 @@ hsearch_r (item, action, retval, htab)
|
||||||
hval <<= 4;
|
hval <<= 4;
|
||||||
hval += item.key[count];
|
hval += item.key[count];
|
||||||
}
|
}
|
||||||
|
if (hval == 0)
|
||||||
|
++hval;
|
||||||
|
|
||||||
/* First hash function: simply take the modul but prevent zero. */
|
/* First hash function: simply take the modul but prevent zero. */
|
||||||
idx = hval % htab->size + 1;
|
idx = hval % htab->size + 1;
|
||||||
|
|
Loading…
Reference in New Issue